向量assign() 导致back() 出现问题

问题描述

刚刚练习了一些代码挑战并遇到了一个奇怪的问题。我有一个全局方法,它在每个索引(但最后一个)之后用“,”打印向量的内容。然后我为向量分配() 新值并再次调用方法,但第二次调用后的 back() 引用是时髦的。这是主要的驱动程序代码

...
std::vector<int> v = {-2,-1,1,2};
printV(v);

v.assign({1,2,3,4});
printV(v);
...

'printV()' 方法如下所示:

void printV(const std::vector<int> v) {
 for(auto&& i : v) {
  std::cout << i;
  if (i != v.back()) {
   std::cout << ",";
  }
 }
}

所以第一次调用 'printV()' 工作正常并打印 '-2,2'。然而,'v.assign({...})' 之后的第二次调用似乎导致 'v.back()' 引用第一个元素和最后一个元素并打印:'12,4'。我查看了assign()的方法细节,我认为它可能与引用失效有关,但我不确定这意味着什么或它是如何工作的。非常感谢任何帮助。

CM

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)