制作副本和从副本弹出后矢量的最后一个元素发生变化
Last Element of Vector Changes After Making Copy and Popping from Copy
在C++中,我有一个函数,它应该将向量拆分为它的最后一个元素和向量的其余部分。然而,我提出了以下我无法解释的意见:
function(vector<int> indeces){
// indeces = [1,2,3]
vector<int> indeces_ = indeces;
// indeces = [1,2,3] = indeces_
indeces_.pop_back();
// indeces = [1,2,3], indeces_ = [1,2]
// BUT: *indeces.end() != 3 but some unrelated integer
}
您的代码是错误的。您不能以这种方式使用end()
:
返回一个迭代器,该迭代器引用向量容器中末尾元素后的。
过去的结束元素是向量中最后一个元素之后的理论元素。它不指向任何元素,因此不应取消引用。
我认为您没有正确使用std::vector
类。
void std::vector<type>::pop_back()
删除集合中的最后一个元素,有效地将容器大小减少了一个。
函数std::vector<type>::end()
返回一个迭代器,在本例中,该迭代器是指向集合中最后一个元素之后的元素的指针
此外,您发布的代码也存在一些问题。函数应返回一个类型。如果您不想返回任何内容,则返回void。
相关文章:
- lower_bound()返回最后一个元素
- 获取向量C++中第一个值和最后一个值的和
- 获取用C/C++打印的最后一个字符串
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么我的最后一个 ELSE 条件无法正确执行
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 仅显示链表的最后一个元素
- 测试迭代器是否位于列表中的最后一个
- push_back通过自行创建的对象获取最后一个元素的向量
- 使用 map.end() 访问 map 的最后一个元素
- 如何知道地图中的最后一个元素是否被删除?
- std::矢量保存 只推送最后一个元素
- 反转后不返回最后一个元素
- 如何删除矢量中的重复值,最后一个除外
- 如何在写入文件时擦除最后一个逗号
- 如何在新数组较小时创建新数组并将旧数组的最后一个元素复制到新数组中?
- unique()似乎正在添加最后一个元素的另一个副本
- 制作副本和从副本弹出后矢量的最后一个元素发生变化