繁体   English   中英

通过引用传递向量,修改元素 c++

[英]Pass vector by reference, modify elements c++

在 c++ 中,我通过引用一个函数——addUnique——来传递一个“节点”对象的向量,该函数要么增加向量中元素的‘count’属性,要么附加到向量。

const char inputString[] = "aaccgtgacac";

int main(int argc, const char * argv[]) {
    std::vector <Node> nodes;
    for (char input: inputString) {
        addUnique(nodes, input);
    }
    
    for (Node node: nodes) {
        node.display();
    }
}
void addUnique(std::vector<Node>& list, char check) {
    for (Node used: list) {
        if (used.baseChar == check) {
            used.count++;
            return;
        }
    }
    Node node(check, 1);
    list.push_back(node);
}
class Node {
public:
    char baseChar;
    Node* composition1;
    Node* composition2;
    unsigned int count;
    
    Node(char newChar, unsigned int newCount) {
        baseChar = newChar;
        count = newCount;
    }
    void display();
};

主 function 然后输出返回的 cont 值及其对应的 charValues:

您增加计数的循环正在按值迭代Node

for (Node used: list) { ... }

这会创建每个节点的副本,然后您修改副本并将其丢弃。 相反,使循环使用引用:

for (Node& used: list) { ... }

现在您将修改向量中的值,而不是副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM