我假设,如果有,例如:
vector<string> myVector;
myVector.push_back("Camel");
myVector.push_back("is");
myVector.push_back("a");
myVector.push_back("noble");
myVector.push_back("animal");
我做:
for (string val : myVector){
val = "empty";
}
它不会替换vector中的值,因为它已将内容复制到新字符串中。
我想我能做
for (int i=0; i<myVector.size(); i++) {
myVector[i] = "empty";
}
它将执行该行为。
很好我的问题是:
还有其他类似于第一种情况的结构,在这种情况下,我可以说“选择 vector 中的值引用,而不是将值复制到新变量中”,然后我可以直接影响 vector 值,并拥有
for (class value : vector)
类型模型?还是不使用我提到的任何案例的示例最佳实践?迭代器?
最佳答案
声明基于范围的for循环以初始化对每个项目的引用:
for (string& val : myVector){
val = "empty";
}
现在, vector 的项目就地进行了修改。 “项目”的类型可以是...
<item-type> declarator = *itr;
当
itr
是容器的迭代器时,...有效。关于c++ - 用于 vector 访问索引中结构的C++或使用引用代替值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55087777/