微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决向量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 举报,一经查实,本站将立刻删除。