箭头运算符和向量

时间:2018-03-18 05:43:10

标签: c++ pointers vector

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

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;
}

现在这段代码标记了一个错误,指出赋值运算符'='和逻辑运算符'!='根据这些操作数不匹配。现在,如果我使用箭头运算符' - &gt;'代码工作得很好。哪个好,但我想,也许是错误的,在取消引用指向对象的指针时使用了箭头操作符。我试图谷歌这些结果,但也许由于它的非常基本的性质,我找不到这个主题。虽然,我想在几个网站上提到“c ++教程”,但我确实看到他们使用了赋值运算符而没有取消引用向量。现在,这在Visual Studio 2017以及Code :: Blocks的最新版本中都会发生。我错了吗?你真的需要使用箭头操作符吗?或者我错过了一些更基本的东西?

2 个答案:

答案 0 :(得分:3)

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

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

你最初的方式,意味着你试图为索引3处的向量赋值5.向量不支持被赋值,所以这就是错误。

答案 1 :(得分:2)

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

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