gpt4 book ai didi

c++ - 从 foreach 中更改一对值不会显示循环外的更改

转载 作者:太空狗 更新时间:2023-10-29 23:30:09 26 4
gpt4 key购买 nike

我在 for-each 循环之外有一个对象,它包含一对静态 vector 。我想增加该对的第二个参数,如下面的代码所示。但是,当我从另一个 for-each 循环中打印第二个参数时,它会打印“0”作为 vector 中所有元素的值。但是,如果我从第一个 for-each 循环中打印,它会按预期打印“1”。

我不明白为什么更改后值不保存。我已经查过了,for-each 允许我更改值以及对。

char[] name = "abcde"; 
for(int i =0;i<5;i++){
std::pair <string, int> pairCounter;
pairCounter = make_pair(name[i], 0);
outside::lstPairCounter.push_back(pairCounter);
}
for each (pair<string,int> counter in outside::lstPairCounter){

counter.second++;

}
for each (pair<string,int> counter in outside::lstPairCounter){

cout<<counter.second<<'\n';

}

最佳答案

不要使用

for each

最好(参见 https://msdn.microsoft.com/en-us/library/ms177202.aspx ),因为它是非标准的。

C++11 中 for each 循环的工作原理如下:

std::vector<int> v{1,2,3,4,5};

// i becomes a COPY of each value in v, i.e. no changes occur in v
for(int i : v)
++i;

// i becomes a reference to the values in v, changes DO occur in v
for(int& i : v)
++i;

// you could also take a const-reference, good for expensive-to-copy types
for(const T& t: other_vector)
// do stuff

关于c++ - 从 foreach 中更改一对值不会显示循环外的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com