gpt4 book ai didi

c++ - 在 C++ 中使用 STXXL 模板的递归模板函数出错

转载 作者:行者123 更新时间:2023-11-28 03:08:27 25 4
gpt4 key购买 nike

我需要优化 stxxl vector 的 block 大小 BlkSize_ 参数,以便使用简单的网格搜索进行部分和查找。由于为 stxxl vector 指定它的唯一方法似乎是将它用作 vector 生成器中的模板参数,我知道我想使用一些递归模板函数,它会在给定 block 大小模板参数的情况下输出 partial_sum 函数使用的时间。我还需要携带一个 vector 大小作为参数。

这是我的代码:

template<unsigned int size>
void TestPartialSum(int N) {
typedef stxxl::VECTOR_GENERATOR<
int,
1,
1,
size,
stxxl::RC,
stxxl::lru>::result xxlvector;

xxlvector v(N);
xxlvector res(N);
iota(v.begin(), v.end(), 5, 2);
std::cerr << "N = " << N << std::endl;
Profiler profiler;
std::partial_sum(v.begin(), v.end(), res.begin());
TestPartialSum<size / 2>(N);
return;
}

但是尽管 struct stxxl::VECTOR_GENERATOR 恰好采用 6 个参数(class Tp_, unsigned int PgSz_, unsigned int Pages_, unsigned int BlkSize_, class AllocStr_, stxxl::pager_type Pager_),我收到这个:

error: too few template-parameter-lists

对于 typedef 行。

可能是什么问题?

最佳答案

看起来你缺少一个 typename 来告诉 result 是一个类型:

  typedef typename stxxl::VECTOR_GENERATOR<
int,
1,
1,
size,
stxxl::RC,
stxxl::lru>::result xxlvector;

result 的解释取决于你代码中的模板参数size,C++ 中有一条特殊的规则将其解释为非类型除非 typename 关键字被使用。参见 Where and why do I have to put the “template” and “typename” keywords?了解更多信息。

关于c++ - 在 C++ 中使用 STXXL 模板的递归模板函数出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com