我想使用矢量向量插入多个数组 为此,I / P是这样的:
2 : Number of array ( can be vary )
3 1 2 3 : 3( size of array) 1 2 3( elements in array )
4 4 5 6 7 : 4( size of array) 4 5 6 7 ( elements in array)
然后我需要对它进行一些操作 所有I / P都由用户输入。只给出了它的范围。
2 <= No of array <= 10
1 <= Elements in array <= 1000000
上面我尝试了以下方法:
int main()
{
int no_of_array, size;
long int num;
int j = 0;
cin >> no_of_array;
第一种方式:
vector < vector<int> > array_vector[no_of_array];
while( no_of_array -- )
{
cin >>size;
for( int i = 0; i < size ; i++ )
{
cin >> num;
array_vector[j].push_back({num});
}
j++;
}
cout<< vector_array[1][2]; // Error
第二种方式:
vector< vector<int> > array_vector;
while( no_of_array --)
{
cin >> size;
for( int i = 0 ; i < size ; i++ )
{
cin >> num;
array_vector[j].push_back(num);
}
j++;
}
cout<< vector_array[1][2]; // Error
第三种方式:(工作)
vector<vector<int> > array_vector;
for( int i = 0 ; i < no_of_array ; i++ )
{
cin >> size;
vector<int> v;
for( int j = 0 ; j < size ; j++ )
{
cin >> num;
v.push_back(num);
}
array_vector.push_back(v);
}
cout<<array_vector[1][2]; // No Error
某处我读到矢量矢量的第三种方式不适合竞争性编程。为什么? 用前两种方法遍历元素时我做了什么错误?
答案 0 :(得分:1)
您可以尝试以下代码
int main(int argc,char* argv[])
{
unsigned int num;
int elm;
unsigned int size;
std::cout << "Enter the number of rows" << std::endl;
std::cin >> num;
std::vector<std::vector<int> > a(num,std::vector<int>(0,0));
for(unsigned int i=0;i<num;i++)
{
std::cout << "Enter the size of " << i+1 << "array:" << std::endl;
std::cin >> size;
for(unsigned int j=0;j<size;j++)
{
std::cout << "Enter the element" <<std::endl;
std::cin >> elm;
a[i].push_back(elm);
}
}
for(unsigned int i=0;i<a.size();i++)
{
for(unsigned int j=0;j<a[i].size();j++)
{
std::cout << "Element at [" <<i<<"][" <<j <<"] is " << a[i][j] <<std::endl;
}
}
return 0;
}