我是C ++的新手,我不知道如何将函数push_back定义为我的结构:
struct Arco {
int i, j;
Arco () {};
Arco (const Arco& obj): i(obj.i), j(obj.j) {};
Arco(int _i, int _j) : i(_i), j(_j) {}
};
我有一个弧矢量矢量:
vector < vector < Arco > > Df;
Df = vector < vector < Arco > > ( nn, vector < Arco > ( ) );
我希望能够允许命令:
Df[i][j].push_back(Arco(u,v));
我该怎么办?
答案 0 :(得分:1)
您没有“定义”push_back,而是使用现有的。
首先,将向量推回向量向量,将元素推回到内向量中。
df.push_back(vector<Arco>());
df[0].push_back(Arco(1, 2));
答案 1 :(得分:0)
如下所示
vector<vector<Arco> > Df (nn, vector<Arco>());
//...
for ( std::vector<Arco> &inner : Df ) push_back( Arco( 10, 10 ) );
或
for ( std::vector<Arco> &inner : Df ) push_back( { 10, 10 } );
或
for ( std::vector<Arco> &inner : Df ) emplace_back( 10, 10 );
或
for ( std::vector<vector<Arco> >::size_type i = 0; i < DF.size(); i++ )
{
DF[i].push_back( Arco( 10, 10 ) );
//DF[i].push_back( { 10, 10 } );
//DF[i].emplace_back( 10, 10 );
}
或者
for ( auto it = DF.begin(); it != DF.end(); ++it )
{
it->push_back( Arco( 10, 10 ) );
//it->push_back( { 10, 10 } );
//it->emplace_back( 10, 10 );
}
至于表达
Df[i][j].push_back(Arco(u,v));
然后它是不正确的,因为表达式Df[i][j]
是Arco
类型的对象而不是向量。
答案 2 :(得分:0)
抱歉!
我不能这样做:
for (int i = 0; i < ni; i++) {
for (int j = 0; j < ni; j++) {
for (int u = 0; u < nn; u++) {
for (int v = 0; v < nn; v++) {
Df[i][j].push_back(Arco(u,v));
}
}
}
}