我对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/

10-13 06:59