C++ 分配&;向量的输出向量<;int>;
下面的代码生成了结果输出,这非常好,我需要它。但是我想将每个修改的C++ 分配&;向量的输出向量<;int>;,c++,vector,C++,Vector,下面的代码生成了结果输出,这非常好,我需要它。但是我想将每个修改的vector保存在另一个向量中,然后通过打印vector元素获得输出 我得到了一个模板,它提供了一个向量的格式化输出,但它无法打印vector的元素,请通过取消注释代码片段进行检查 为什么会有这种行为 如何先分配然后打印向量元素,以便输出与现在相同 使用C++14(4.9.2) #包括 #包括 使用名称空间std; #定义s(n)scanf(“%d”,&n) 模板 内联std::ostream&operator您已经注释掉了//r
vector
保存在另一个向量中,然后通过打印vector
元素获得输出
我得到了一个模板,它提供了一个向量的格式化输出,但它无法打印vector
的元素,请通过取消注释代码片段进行检查
为什么会有这种行为
如何先分配然后打印向量
元素,以便输出与现在相同
使用C++14(4.9.2)
#包括
#包括
使用名称空间std;
#定义s(n)scanf(“%d”,&n)
模板
内联std::ostream&operator您已经注释掉了//rlist[count++]=list代码>
这大概是因为它失败了rlist
为空,但它没有元素[0]
,因此无法分配给它。但您不想分配给[0]
,而是要创建它。最简单的方法是rlist.push_back(列表)代码> 您可能对KerrekSB感兴趣。您需要使用计数初始化rlist
,以便使用方括号。
#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;
}