我对C++还是很陌生,我曾尝试寻找答案并运行测试,但是很多时候,我一直难以弄清是什么原因导致了特定的行为。
我的问题涉及到使用嵌套[ ]
运算符来访问或修改循环中的元素-示例:
//Declare
std::vector<int> a1 {10,20,30,40} ;
std::vector<int> a2 {2,3} ;
int S2 = a2.size() ;
//Loop
for(int i = 0 ; i < S2 ; i++){
a1[a2[i]] = a1[a2[i]] + 5000 ;
}
这样可以吗?我不仅在通用惯例方面,而且在效率和我需要考虑的任何其他潜在因素方面都提出了要求。
我是否应该先将
a[i]
存储在循环内的临时变量中,然后使用它来修改我的 vector a2
中的元素?我确实知道它可能不是最好的结构,我应该使用其他数据结构来执行这种操作,但是我只是想了解这是否可以,或者是否会导致某些未定义的行为。
最佳答案
这是完全正确的。
但实际上,您只想迭代标准容器的元素。 C++允许针对该用例的基于范围的for语句:
for (index: a2) {
a1[index] += 5000;
}
我发现它更具可读性,即使它主要是出于品味的问题。
免责声明:此代码无法控制
a2
元素作为a1
的索引的有效性。关于c++ - 对std::vector使用嵌套的[]操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62036783/