我正在尝试调整在定义的自定义类上定义的 vector 的大小
class Product{
private:
Product *next;
int pid;
public:
Product(int _pid): pid(_pid){}
};
int main(){
vector<Product> v;
v.resize(1, Product(1));
v[0] = Product(1);
cout<< v.size() << endl;
v.resize(2, Product(2));
}
当我第二次尝试调整它的大小时,我的代码失败了,我查看了其他答案,但我无法真正理解它背后的想法。
我有一个需要调整 vector 大小的要求。
有人可以解释一下吗?有什么解决方法吗?
最佳答案
如果您想将新的 Product
添加到您的 vector
中,使用 v.push_back(Product(1)); 会容易得多;
代替。这样您就不必自己调整它的大小。
但是你的问题的答案是第二次resize是没有问题的,因为在调用v.resize(1, Product(1));
之后,你的v的大小
为1
,只能存放一个对象。 (作为提醒,每个 array
、vector
等的第一个索引等于 0
)。您的程序无法运行,因为通过使用 v[1] = Product(1);
您尝试访问您的 vector
的第二个索引,但它超出了范围。
如果将 main
更改为此,问题就会消失:
int main(){
vector<Product> v;
v.resize(1, Product(1));
v[0] = Product(1);
v.resize(2, Product(2));
}
关于c++ - 为什么 std::vector 调整大小失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787282/