AAA*_*AAA 0 c++ stl vector c++11
我正在尝试调整在定义的自定义类上定义的向量
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));
}
Run Code Online (Sandbox Code Playgroud)
当我第二次尝试调整它时,我的代码失败了,我已经查看了其他答案,但我无法理解它背后的想法.
我有一个要求,我需要调整向量的大小.
有人可以解释一下吗?有什么解决方法吗?
如果你想要添加新Product的vector东西,那么使用它会更容易v.push_back(Product(1));.这样您就不必自己调整大小.
但是你的问题的答案是第二次调整大小没有问题,因为在调用之后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));
}
Run Code Online (Sandbox Code Playgroud)