没有运算符“=”匹配这些操作数

时间:2015-05-25 18:49:02

标签: c++ arrays vector

所以这一定是非常愚蠢的,但是这个代码我收到了错误。

可能出现的问题,操作数<,>也不行。一个人使用不同的向量吗?当我尝试y.at(1)= 10;它说表达式必须有类型......?

#include "stdafx.h"
#include <iostream>
#include "time.h"
#include <vector>


int main()
{
    using namespace std;
    const long long l = 100000;

    vector <int> y[l];
    long long x[l];

    y[0] = 10; // Test statement results in Error.

//for (long i = 0;i < l;i++) {
    //  y.at(i) = i;//rand() % 100;
    //  x[i] = rand() % 100;
    //}



    clock_t t = clock();

    for (long long i = 0;i < l;i++) {
        long long r;
        r = y[i] ^ ((x[i]^y[i]) & -(x[i] < y[i]));
        /*if (x[i] < y[i]) {
            r = x[i];
        }
        else {
            r = y[i];
        }*/

    }

    t = clock() - t;

    printf("It took %d ms ", t);

return 0;

}

对于上下文,我正在尝试测试运行时间。最初使用的是std :: array,但似乎不能用于大型数组,因此我决定尝试向量。

用于 http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c4027/C-Tutorial-A-Beginners-Guide-to-stdvector-Part-1.htm 作为参考,但似乎虽然我做的完全相同,但有些东西不起作用。

2 个答案:

答案 0 :(得分:8)

这是一个非常常见的拼写错误,写作

std::vector<int> y[10];

声明一个包含10个空向量的数组。要有一个10元素的向量,你需要

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

代替。

你并不是唯一一个认为犯这个错误的错误信息有点神秘......这是一个不幸的C ++缺乏的领域(现在还不确定,但我记得有些公司正在制作一个生活在从VC ++解密C ++错误消息上。)

答案 1 :(得分:2)

你已经声明了一个向量数组,而不是向量。你想要vector <int> y(l);