用于向量中结构的 C++ 访问索引或使用引用而不是值
Posted
技术标签:
【中文标题】用于向量中结构的 C++ 访问索引或使用引用而不是值【英文标题】:C++ for structure in vectors access index or use reference instead value 【发布时间】:2019-03-10 12:41:21 【问题描述】:我假设如果我有,例如:
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";
它将执行该行为。
不过还好。我的问题是:
存在与第一种情况类似的任何其他结构,我可以说“选择向量中值的引用而不是将值复制到新变量”,然后我可以直接影响向量值并拥有 @987654324 @打字模型?
或者不使用我提到的任何案例的示例的最佳实践?迭代器?
【问题讨论】:
在这种特殊情况下,std::fill
将完成任务并为其附加一个有意义的名称。
很高兴知道@chris,但遗憾的是我想像这样简化示例代码。但我一直在寻找如何通过引用访问。无论如何,当我需要它时,我会记住“填充”。非常感谢。
是的,我认为这对大多数未来的访问者来说不是一个有用的答案,但可能会对奇怪的人有所帮助。
【参考方案1】:
声明基于 for 循环的范围以初始化对每个项目的引用:
for (string& val : myVector)
val = "empty";
现在矢量的项目已就地修改。 “项目”的类型可以是...
<item-type> declarator = *itr;
...当itr
是容器的迭代器时有效。
【讨论】:
按预期工作!这是我的坏事,因为我认为现在它有点明显,但很清楚它是这样的。非常感谢@StoryTeller!在 5 分钟内接受答案.. 你太快了 :)以上是关于用于向量中结构的 C++ 访问索引或使用引用而不是值的主要内容,如果未能解决你的问题,请参考以下文章