通用矢量推回模板

时间:2013-06-23 14:53:57

标签: c++ templates vector struct push-back

我正在编写一些与数据库交互的代码。我的解决方案是使用各种结构的向量来表示数据库中的每个表。我想在我的Database类中创建一个模板来push_back向量并插入一个新的(空白)行;但是,我无法弄清楚要放在“push_back(...)”中的内容。以下类型有意义,但不起作用。正在返回密钥,以便稍后我可以与类内的向量进行交互。

template <class T> void Database::newRecord(T& Type, int& key)
{
    Type.push_back(Type.value_type());
    key = Type.size()-1;
    Type[key].PK = key;
}

我将使用以下内容调用例程:

vector<table_row> table;
int key;
newRecord(table, key);
table[key]...

结构看起来像这样:

struct table_row {
    int PK;
    ....
};

谢谢!

2 个答案:

答案 0 :(得分:0)

对我而言,整个想法都是可疑的。但如果这是你想要的,你可以在没有push_back的情况下完成,只需按vec.resize(vex.size()+1)而不是根据需要修补vec.back()

我建议忘记“空”记录,但添加实际的预期内容。

答案 1 :(得分:0)

试试这个

template <class T> void Database::newRecord(T& Type, int& key)
{
    typedef Type::value_type type;
    Type.push_back( type() );
    key = Type.size()-1;
    Type[key].PK = key;
}