push_back() 更改函数中其他向量的大小
push_back() changes size of other vector in function
>我正在创建一个类,该类具有连接两个unique_ptrs向量的函数。当我使用 push_back 函数时,参数向量的大小会发生变化,我不知道为什么。
class A: public vector<unique_ptr<int>>{
public:
A& concatenate(A& c);
};
A& A::concatenate(A& c) {
for(int i = 0; i < c.size(); i++) { //this loop never stops
push_back(make_unique<int>()); //this line changes the size of c?
(*this)[(*this).size() - 1] = move(c[i]);
}
return *this;
}
for 循环不会停止运行,因为每次使用 push_back 方法时,c 的大小也会增加 1。
我还想在 for 循环之前使用 resize(),然后移动所有指针,但我想知道为什么 push_back 方法会更改另一个向量。
当这个 A 和 c A 对象相同时,可能会发生这种情况,即您尝试在一个对象上调用 concatenate 并将相同的对象作为 param 传递给连接。所以实际上push_back并没有改变另一个向量的大小。它与您正在处理的矢量相同。
附带说明一下,您的代码和帖子几乎没有问题
- 正如@PaulMcKenzie所说,您应该发布MCVE
- 一般来说,从 STL 容器派生不是一个好主意
- 除非你试图学习如何实现,否则你应该首先尝试查找和使用STL容器提供的方法。@Some程序员伙计。
相关文章:
- 包含指向其他结构的指针向量的结构
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 如何删除包含其他向量的向量?
- C++:从其他类访问结构的私有成员向量
- 为什么最后一个推回向量的对象的字段会转移到向量的其他对象?
- 只对向量中的一个类成员进行排序,其他成员保持不变
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- 使用字节向量作为其他类型的原始存储是一种好的做法吗
- 指向用随机指针归档的其他类对象的指针的c++向量
- 将向量C++中的每个其他元素累加
- C 从特定位置插入其他向量中的载体
- push_back() 更改函数中其他向量的大小
- 使用指针向量循环其他向量
- 如何将向量<string>和push_back()格式化为其他向量?
- 为什么std::vector迭代器在重新分配其他向量时无效
- 检查向量less中的元素是否比其他向量中的元素多
- 如何使指向其他向量的指针在vector中保持有效
- 几个相同大小的向量.给定其中一个向量中的元素,快速访问其他向量中的相应元素
- 将arma::vec中给定位置的元素与其他向量中的相应元素进行更改
- 指向其他向量元素的指针向量