箭头运算符和向量
Arrow operator and vectors
我一直在尝试将特定的向量元素重新分配给新值,但从编译器收到错误,我不确定我是否理解它。所以我相信你可以重新分配单个向量元素,就像重新分配数组的元素一样。
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);
相关文章:
- 向量范数的c++中的||运算符
- 向量保持复数的运算符重载
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将 [][] 运算符与向量一起使用?
- 尝试重载输出运算符时,我无法遍历对象向量
- 重载运算符 + 用于向量:命名空间标准
- C++ 运算符"="重载 - 在 lhs 上获取向量中的所有值,使其等于 rhs 上的双精度值
- 尝试使用比较运算符对对象向量进行排序
- c++下标运算符到下级类向量
- 为什么与<运算符的向量比较会比较每个项目两次?
- STL按客户"<"运算符对向量进行排序。为什么要将"<"运算符定义为 const?
- 为什么C++向量没有串联运算符?
- C++向量 [] 运算符在 at() 工作时抛出错误
- C++ 向量运算符 [] 参考
- 数值向量运算符重载 + 右值引用参数
- C++向量运算符重载
- 向量运算符和类型转换
- std::向量运算符重载不采用常量参数?
- 超出范围的向量运算符[]导致崩溃
- C++中的有效向量运算符/对临时对象的引用