我的想法非常简单.我希望将元素从矢量temp复制到矢量数据.
void copy(vector<int> &data, vector<int> &temp)
{
int i=0;
while (i<data.size()) {
data[i]=temp[i++];//unsequenced modification and access to "i"
cout<<i<<endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:temp = {1,2,3,4}但数据= {1,1,2,3}即使我的cout值是1,2,3,4
想知道为什么.提前感谢您的帮助!
R S*_*ahu 10
这条线
data[i]=temp[i++];//unsequenced modification and access to "i"
Run Code Online (Sandbox Code Playgroud)
有未定义的行为.执行该行的结果将根据data[i]首先评估还是temp[i++]首先评估而不同.
使用
while (i<data.size()) {
data[i]=temp[i];
++i;
}
Run Code Online (Sandbox Code Playgroud)
作为替代方案,请使用该std::copy功能.
void copy(vector<int> &data, vector<int> &temp)
{
std::copy(temp.begin(), temp.end(), data.begin());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6445 次 |
| 最近记录: |