[英]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.