7
votes

I'm new to c++ and I'm learning about vector. I wrote a basic code to see how it works but i get the following errors.

||=== Build file: "no target" in "no project" (compiler: unknown) ===| C:\Users\Sohit\Desktop\Comparator\vectors.cpp||In function 'int main()':| C:\Users\Sohit\Desktop\Comparator\vectors.cpp|7|error: 'void operator=(const int&)' must be a nonstatic member function| C:\Users\Sohit\Desktop\Comparator\vectors.cpp|10|error: no match for 'operator=' (operand types are 'std::vector' and 'int')|

no match for 'operator='(operand type are 'std::vector' and 'int' please help

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

}

1
Does the error disapear, if you remove the '+' in the 6 line?user2672107
would anyone suggest some useful tips on how to proceed further to gain expertise in C++. I know the basics as I studied it for class 12 boards, from Sumita Arora.Sohit Gore
@manni66 sorry there isnt any + that is a typo. the error is on line 8Sohit Gore
Could you remove this error block or at least format it? It is useless as it is.Holt
Also, Matrix[i,j] has to be written as Matrix[i][j]. There is no operator[] taking two parameters.Bo Persson

1 Answers

16
votes

The following:

vector<int> v[100];

...declares 100 vectors of int with size 0, so when you do:

v[i] = i+1;

v[i] is the ith vector, so you try to assign i + 1 which is a int to v[i] which is vector.

If you want a single vector of size 100, the correct syntax is:

vector<int> v(100);