向量的赋值和输出向量<int>
Assign & Output vector of vector<int>
下面的代码生成了结果输出,这完全符合我的需要。但是我想将每个修改过的 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;
}
您已注释掉// rlist[count++] = list;
这大概是因为它失败了。 rlist
是空的,它还没有元素 [0]
所以你不能给它赋值。但是你不想分配给 [0]
,你想创建它。最简单的方法是 rlist.push_back(list);
。
下面的代码生成了结果输出,这完全符合我的需要。但是我想将每个修改过的 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;
}
您已注释掉// rlist[count++] = list;
这大概是因为它失败了。 rlist
是空的,它还没有元素 [0]
所以你不能给它赋值。但是你不想分配给 [0]
,你想创建它。最简单的方法是 rlist.push_back(list);
。