gpt4 book ai didi

c++ - 使用具有生成器类型的 C++ 模板函数

转载 作者:行者123 更新时间:2023-11-28 00:53:14 25 4
gpt4 key购买 nike

我正在实现一个模板函数,它将参数迭代器指向的序列的前 n 个元素的值设置为调用生成器函数返回的值。

我有以下代码:

template <typename IteratorOut, typename SizeType, typename Generator> IteratorOut createSequence(IteratorOut out, SizeType n, Generator gen) {
std::vector<Generator> vec;
for (SizeType i = 1; i <= n; i++) {
vec.push_back(gen());
}
std::copy(vec.begin(), vec.end(), out);

return out;
}

我正在使用以下内容测试该功能:

int generate () {
return 5;
}
...
std::vector<int> vec_int;

createSequence(vec_int.begin(), 5, generate);
for (std::vector<int>::iterator iter = vec_int.begin(); iter != vec_int.end(); iter++) {
std::cout << *iter << std::endl;
}

我收到“错误:从‘int (*)()’到‘int’的无效转换”。你能看出我的模板函数有什么问题吗?

最佳答案

vector 类型错误:

std::vector<Generator> vec;

在这里,Generator 是一个函数,而您需要一个 int vector :

std::vector<SizeType> vec; // SizeType is an euphemism for int

但也许您根本不需要 vector !

for (SizeType i = 1; i <= n; i++) {
*out = gen(); // is this what you want?
++out;
}

关于c++ - 使用具有生成器类型的 C++ 模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12887086/

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