【发布时间】:2023-03-12 08:43:01
【问题描述】:
我正在尝试动态分配和打印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;
}
【问题讨论】:
-
您需要两个循环来执行此操作。
std::vector<int>没有定义std::ostream的输出运算符。因此,只需将另一个 for 循环嵌套到您已有的循环中即可。 -
能否请您发布代码 sn-p 我对 C++ 和 STL 非常陌生
-
我相信它足够简单,如果你自己弄清楚,你会有更好的学习效果。您拥有的代码几乎就在那里。所以没有。
-
避免对类和变量使用相同的名称。
-
将
vector <int> A(s)更改为vector <int> A否则说对于 n = 5 它将创建一个长度为 5 的向量,用{0, 0, 0, 0, 0}初始化并再次推送{0, 1, 2, 3, 4}最终将导致{0, 0, 0, 0, 0, 0, 1, 2, 3, 4}