箭头运算符和向量

Arrow operator and vectors

本文关键字:向量 运算符      更新时间:2023-10-16

我一直在尝试将特定的向量元素重新分配给新值,但从编译器收到错误,我不确定我是否理解它。所以我相信你可以重新分配单个向量元素,就像重新分配数组的元素一样。

std::vector<int> myVector[10];
myVector[5] = 6;

或者,您也可以使用内置的".at"通过边界检查来访问向量。当我编写一些琐碎的代码只是为了更好地理解一些概念时,我遇到了一个特殊的情况。

int main()
{
std::vector<int> test[10];
test[3] = 5;
if (test[3] != 6) 
{
std::cout << "It works!" << std::endl;
}
return 0;
}

现在,这段代码标记了一个错误,指出赋值运算符"="和逻辑运算符"!="根据这些操作数不匹配。现在,如果我使用箭头运算符"->",代码就可以正常工作。这很好,但我认为,也许是错误的,在取消引用指向对象的指针时使用箭头运算符。我试图用谷歌搜索这些结果,但也许由于它非常简陋的性质,我找不到太多关于这个主题的信息。虽然,我想在一些带有"c ++ 教程"的网站上提到,我确实看到他们使用了赋值运算符而没有取消引用向量。现在,这发生在Visual Studios 2017以及最新版本的Code::Blocks中。我错了吗?您真的需要使用箭头运算符吗?还是我错过了一些更基本的东西?

您创建了一个包含 10 个向量的数组,而不是包含 10 个元素的向量。向量最终是一个类类型,所以你需要通过构造函数初始化它:

std::vector<int> test(10);

您最初这样做的方式意味着您尝试为索引 3 处的向量分配值 5。向量不支持被分配数字,所以这就是错误的原因。

您声明的是一个向量数组,而不是一个初始长度的向量。使用以下内容代替声明:

std::vector<int> myVector(10);