我试图动态地分配和打印vector<vector<int>>,但是我想不出怎么做--我被困在这里是我的程序。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class A {
public:
vector<int> getVector(int s) {
vector <int> A(s);
for (int j = 0; j < s; j++) {
A.push_back(j);
}
return A;
}
};
int main() {
A obj;
int n = 5;
vector<vector<int>> A;
A.push_back(obj.getVector(n)); // pushes a vector on vector A
A.push_back(obj.getVector(n - 1));
vector<vector<int>> ::iterator it;
it = A.begin();
for (it; it != A.end(); it++) {
cout << *it;
}
return 0;
}发布于 2020-09-05 13:43:04
vector<vector<int>> ::iterator it;
it = A.begin();
for (it; it != A.end(); it++) {
for(vector<int>::iterator it2 = it->begin(); it2 != it->end(); ++it2)
cout << *it2;
}发布于 2020-09-05 13:47:45
考虑向量,就像一个动态的2D数组。
为此您将需要2个循环。
还需要更改一些内容:
vector <int> A(s);将初始化一个大小为s的向量,将所有元素设置为0,然后将第一个n元素推入A。因此,将vector <int> A(s);改为vector <int> A;。using namespace std被认为不是一个好的实践。找出原因。请查看以下实现:
#include<iostream>
#include<vector>
#include<string>
class A {
public:
std::vector<int> getVector(int s) {
std::vector <int> A; //Change 1
for (int j = 0; j < s; j++) {
A.push_back(j);
}
return A;
}
};
int main() {
A obj;
int n = 5;
std::vector<std::vector<int>> test_vector;
test_vector.push_back(obj.getVector(n)); // pushes a vector on vector A
test_vector.push_back(obj.getVector(n - 1));
std::vector<std::vector<int>> :: iterator test_vector_iterator;
test_vector_iterator = test_vector.begin();
for (test_vector_iterator; test_vector_iterator != test_vector.end(); test_vector_iterator++) {
std::vector<int> :: iterator inner_vector_iterator = (*test_vector_iterator).begin();
for(inner_vector_iterator; inner_vector_iterator != (*test_vector_iterator).end(); inner_vector_iterator++){
std::cout << *inner_vector_iterator <<" ";
}
std::cout << std::endl;
}
return 0;
}输出:
0 1 2 3 4
0 1 2 3 发布于 2020-09-05 13:41:24
使用范围循环,如
for( const auto &i : A ) // for elements in A, i is vector<int>
{
for( const auto &j : i ) // for sub elements in A, j is int
{
std::cout<<j;
}
}或使用迭代器
for( vector<vector<int>>::iterator i = A.begin() ; i != A.end(); i++ )
{
for( vector<int>::iterator j = i->begin(); j != i->end(); j++ )
{
std::cout<<*j;
}
}谢谢。
https://stackoverflow.com/questions/63754495
复制相似问题