首页 > 解决方案 > 用于向量中结构的 C++ 访问索引或使用引用而不是值

问题描述

我假设如果我有,例如:

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";
}

它不会替换向量中的值,因为它已将内容复制到新字符串。

我想我能做到

for (int i=0; i<myVector.size(); i++) {
    myVector[i] = "empty";
}

它将执行该行为。

不过还好。我的问题是:

存在与第一种情况类似的任何其他结构,我可以说“选择向量中值的引用而不是将值复制到新变量”,然后我可以直接影响向量值并拥有for (class value : vector)打字模型?

或者不使用我提到的任何案例的示例的最佳实践?迭代器?

标签: c++for-loopvector

解决方案


声明基于 for 循环的范围以初始化对每个项目的引用:

for (string& val : myVector){
    val = "empty";
}

现在向量的项目被原地修改。“项目”的类型可以是任何...

<item-type> declarator = *itr;

... 是itr容器的迭代器时有效。


推荐阅读