C++ 为什么';这个向量赋值不行吗?
类似问题:C++ 为什么';这个向量赋值不行吗?,c++,stdvector,assignment-operator,copy-assignment,C++,Stdvector,Assignment Operator,Copy Assignment,类似问题: #包括 #包括 使用名称空间std; int main(){ 向量vvi; vvi.resize(1); vvi[0]。保留(1); vvi[0][0]=1; 向量vi=vvi[0]; 库特 您需要调整大小,而不是保留 访问元素i,其中i>=v.size()是未定义的行为。reserve影响容量,而不是大小 如果我要进入实际方面,我可能会猜测,您可能会通过赋值vvi[0][0]=1;(至少在发布模式下)逃脱。但主要的实际问题在于这里 vector<int> v
#包括
#包括
使用名称空间std;
int main(){
向量vvi;
vvi.resize(1);
vvi[0]。保留(1);
vvi[0][0]=1;
向量vi=vvi[0];
库特
您需要调整大小
,而不是保留
访问元素i
,其中i>=v.size()
是未定义的行为。reserve
影响容量
,而不是大小
如果我要进入实际方面,我可能会猜测,您可能会通过赋值vvi[0][0]=1;
(至少在发布模式下)逃脱。但主要的实际问题在于这里
vector<int> vi = vvi[0];
但这都是猜测。你问题的正确答案是
vvi[0].reserve(1);
vvi[0][0] = 1;
已具有未定义的行为,无需进一步考虑
您需要调整大小
,而不是保留
访问元素i
,其中i>=v.size()
是未定义的行为。reserve
影响容量
,而不是大小
如果我要进入实际方面,我可能会猜测,您可能会通过赋值vvi[0][0]=1;
(至少在发布模式下)逃脱。但主要的实际问题在于这里
vector<int> vi = vvi[0];
但这都是猜测。你问题的正确答案是
vvi[0].reserve(1);
vvi[0][0] = 1;
已具有未定义的行为,无需进一步考虑。此外,vii[0][0]
中的向量对象“有效”,因为vii[0]
确实确保数组在偏移量0
处有一个元素,但复制构造后不需要容量。@bitmask:我编辑的目的是为了与您的评论同时说明这一点!:)对不起,我忘记了T;另外,vii[0][0]
因为向量对象在vii[0]中“起作用”
确实确保数组在偏移量0
处有一个元素,但复制构造后不需要容量。@bitmask:我正在编辑,以便与您的注释一起简单地说明这一点!:)抱歉,我忘了T;
vvi[0].reserve(1);
vvi[0][0] = 1;