问题描述
刚刚练习了一些代码挑战并遇到了一个奇怪的问题。我有一个全局方法,它在每个索引(但最后一个)之后用“,”打印向量的内容。然后我为向量分配() 新值并再次调用该方法,但第二次调用后的 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 (将#修改为@)