无法匹配运算符=(操作数类型为'std :: vector <int>'和'int')

7

我是c++的新手,正在学习vector。我编写了一个基本的代码来看它如何工作,但是我得到了以下错误。

|| ===构建文件:“无目标”在“无项目”中(编译器:未知)=== | C:\Users\Sohit\Desktop\Comparator\vectors.cpp ||在函数'int main()'中:| C:\Users\Sohit\Desktop\Comparator\vectors.cpp | 7 | 错误:'void operator =(const int &)'必须是非静态成员函数 | C:\Users\Sohit\Desktop\Comparator\vectors.cpp | 10 | 错误:没有匹配 'operator ='(操作数类型是'std :: vector'和'int')|

没有匹配的'operator ='(操作数类型是'std :: vector'和'int') 请帮忙。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v[100];
for(int i=0;i<100;i++)
    v[i]=i+1;

    int Count=v.size();
    std::cout<<Count;
    bool is_nonempty=!v.empty();

    cout<<is_nonempty;


    vector<int>v2;
for(int i=0;i<100;i++)
    v2.push_back(i*i);

int count2 = v2.size();
cout<<count2;

v.resize(200);

for(int i=100;i<200;i++)
    v[i]=i*i*i;

v.resize(200);

for(int i=100;i<200;i++)
    v2.push_back(i*i*i);

vector<int> v3=v2;

v.clear();

v(20,"unknown");

int n,m;
cin>>n>>m;
vector< vector<int> > Matrix(n,vector<int>(m,-1));

for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    cout<<Matrix[i][j];

return 0;

}


如果您在第6行中删除“+”符号,错误是否会消失? - user2672107
有人能提供一些有用的建议,关于如何进一步获得C++方面的专业知识吗?我已经学过了基础知识,因为我在12年级时从Sumita Arora那里学习了它。 - Sohit Gore
@manni66 抱歉,没有任何 + 号,那是一个打字错误。错误在第8行。 - Sohit Gore
你能移除这个错误块或者至少格式化一下吗?它现在的样子毫无用处。 - Holt
此外,Matrix[i,j]必须写成Matrix[i][j]。没有接受两个参数的operator[] - Bo Persson
一切都正常工作了。感谢大家的帮助。我还是Stack Overflow的新手,这里真的很有帮助。 - Sohit Gore
1个回答

18
以下内容:
vector<int> v[100];

...声明了100个大小为0int向量,因此当您执行以下操作时:

v[i] = i+1;

v[i] 表示第 i 个向量,因此你需要将 i + 1(一个整数)赋值给 v[i](一个向量)。

如果你想要一个大小为 100 的单一向量,正确的语法是:

vector<int> v(100);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接