C++ 访问另一个else语句中声明的向量

C++ 访问另一个else语句中声明的向量,c++,C++,我有一个依赖于操作码的if/else if语句,第一个选项创建一个向量,而第二个选项修改它,所以我决定定义我将用于向量的结构,并在第一个语句中声明它,但是这个选项不允许我从其他任何地方修改它,有没有办法在第二个选项中更改向量中的某些值,并在第一个选项中声明 if(op == "new"){ cin >> size; vec<int> v(size); } else if(op == "mod"){ int p

我有一个依赖于操作码的if/else if语句,第一个选项创建一个向量,而第二个选项修改它,所以我决定定义我将用于向量的结构,并在第一个语句中声明它,但是这个选项不允许我从其他任何地方修改它,有没有办法在第二个选项中更改向量中的某些值,并在第一个选项中声明

if(op == "new"){
    cin >> size;
    vec<int> v(size);
} else if(op == "mod"){
    int pos, val;
    cin >> pos >> val;
    v[pos] = val;
}
if(op==“新建”){
cin>>尺寸;
vecv(大小);
}否则如果(op==“mod”){
int pos,val;
cin>>pos>>val;
v[pos]=val;
}

您无法访问超出其范围的向量。将其向上移动,使其在两个分支中都可以访问。假设它有一个默认构造函数:

vec<int> v;
if(op == "new"){
    cin >> size;
    // resize it or assign a new one to v
} else if(op == "mod"){
    int pos, val;
    cin >> pos >> val;
    v[pos] = val;
}
vecv;
如果(op==“新”){
cin>>尺寸;
//调整其大小或为v指定一个新的
}否则如果(op==“mod”){
int pos,val;
cin>>pos>>val;
v[pos]=val;
}

如果这实际上是代码> STD::向量 >考虑<代码> ReSeffe<代码>,而不是<代码> Resisid和 PurpSuff,而不是访问元素。从某种意义上说,当您使用一些您不知道是否确实需要的元素预先调整向量的大小时,您是在浪费向量功能


对于稀疏向量(您似乎添加了<代码> Val<代码> >随机<代码> POS < /代码>),考虑使用<代码> STD::unOrdEdEdMult。

您不能这样做。这看起来像。你真正想做什么?好的,谢谢你的回答