【发布时间】:2017-07-09 15:19:32
【问题描述】:
我想使用向量的向量插入多个数组。
对于那个 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
在某处我读到向量的第三种方式不适合竞争性编程。为什么??
用第一种两种方法遍历元素时我犯了什么错误?
【问题讨论】:
-
"...不适合竞技编程..." - 那又怎样?那些“竞争性编程”网站并不关心最佳实践或编写可维护的代码。不要在他们身上浪费时间。你只是要学习坏习惯和一些你很可能永远不会在现实世界中使用的东西。编写真正的程序并改为阅读good books。
-
@Jesper Juhl 真正的编程???拜托,你能举个例子吗??
-
我的意思是编写您真正需要或想要编写的真实程序,而不是从竞争性编程网站上解决愚蠢问题的解决方案。