小编N. *_*ber的帖子

我可以有模板函数指针的std :: vector吗?

我有一个模板函数,我想存储指向一个内部的指针std::vector.

该函数如下所示:

template<typename T> void funcName(T& aT, std::vector<std::string>& fileName){...}
Run Code Online (Sandbox Code Playgroud)

现在我想在a里面存储多个指向这类函数的指针std::vector.对于非模板函数,我会这样做:

typedef std::vector<std::string> string_vt;
typedef void func_t(T&, string_vt&);
typedef func_t* funcPointer;
typedef std::vector<funcPointer> funcPointer_vt;
Run Code Online (Sandbox Code Playgroud)

但是模板函数的正确语法是什么?我该如何存放?

编辑:首先,感谢您的快速回复.这是我关于Stack Overflow的第一个问题,所以很抱歉没有提供足够的信息.

T的集合是有限的,它可以是ClassA类型或类型classB.在这些函数模板中,我想用一些硬编码数据对T(所以ClassA或ClassB)进行更改.我有8个这样的函数,它们基本上启动一个默认的构造T,其中包含特定于该函数的数据.在我的程序中,我想启动2*8默认构造的T(8 ClassA和8 ClassB).因此,我运行一个for循环,一个接一个地调用一个函数,用函数的body数据启动我的T对象.

for(int i = 0; i < initT.size(); ++i){
   init_T[i]<T>(someT, fileName);
}
Run Code Online (Sandbox Code Playgroud)

for循环具有与向量内部的函数指针一样多的迭代.在每次迭代时,使用一些先前默认构造的T和一些其他参数调用该函数.最后,目标是使用特定于该功能的数据启动8个T.

EDIT2:如果有帮助,这里有一些实际的源代码.在以下函数模板中,我想访问我的函数指针向量,以便调用相应的函数.

template<typename T_Relation, typename T_Relation_Vec, bool row>
void bulk_load(initRelation_vt& aInitFunctions, T_Relation_Vec& aRel_Vec, const bool aMeasure, const uint aRuns, const char* aPath)
{
    for(size_t i = 0; i < aRuns; ++i)
    {
        MemoryManager::freeAll();
        aRel_Vec.clear(); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

6
推荐指数
1
解决办法
2199
查看次数

标签 统计

c++ ×1

c++11 ×1