我假设,如果有,例如:

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/

10-15 00:52
查看更多