下面的代码生成结果输出,这是我需要的完全正常。但是我希望将每个修改后的vector<int>
保存在另一个向量中,然后通过打印vector<vector<int>>
元素来获取输出。
我有一个模板,可以提供矢量的格式化输出,但无法打印vector<vector<int>>
的元素,请通过取消注释代码片段进行检查。
为什么会出现这种情况?
如何首先分配然后打印vector<vector<int>>
元素,使输出与现在保持相同?
使用C ++ 14(4.9.2)
#include <iostream>
#include <vector>
using namespace std;
#define s(n) scanf("%d",&n)
template<typename T>
inline std::ostream &operator << (std::ostream & os,const std::vector<T>& v)
{
bool first = true;
os << "[";
for(unsigned int i = 0; i < v.size(); i++)
{
if(!first)
os << ", ";
os << v[i];
first = false;
}
return os << "]";
}
typedef vector<int> vi;
typedef vector< vi > vvi;
int main()
{
int n = 4;
// s(n);
vi list(n, 1);
// vvi rlist;
// int count = 0;
// rlist[count++] = list;
cout << list << "\n";
for (int i = 1; i <= n; ++i)
{
for (int j = n; j >= i; --j)
{
while(list[j] == list[j-1])
{
++list[j];
cout << list << "\n";
// rlist[count++] = list;
}
}
}
return 0;
}
答案 0 :(得分:0)
您已评论// rlist[count++] = list;
那可能是因为它失败了。 rlist
为空,它没有元素[0]
,因此您无法分配它。但是,您不想分配给[0]
,您想要创建它。最简单的方法是rlist.push_back(list);
。