gpt4 book ai didi

c++ - 如何为采用 STL 容器迭代器的函数提供函数签名?

转载 作者:可可西里 更新时间:2023-11-01 16:26:12 25 4
gpt4 key购买 nike

我想写一个可以这样调用的函数 my_func,但不关心 v 是一个 std::vector ,它可以是任何 STL 容器。有点像std::for_each:

std::vector<std::string> v = {...};
my_func(v.begin(), v.end());

但我无法弄清楚函数签名。

void my_func(??? i1, ??? i2)
{
std::for_each(i1, i2, ...); // dumb example implementation
}

我不擅长模板编程,所以即使查看 std::for_each 的函数声明也无济于事。

是否有一个简单的实现,或者这是否会从根本上弄乱模板变量?

最佳答案

这取决于您希望函数的通用性。如果迭代器类型必须匹配,则

template <typename T>
void my_func(T i1, T i2)
{
std::for_each(i1,i2,...); //dumb example implementation
}

就是你所需要的。如果您希望它们能够不同,那么您只需要另一个模板参数,例如

template <typename T, typename U>
void my_func(T i1, U i2)
{
std::for_each(i1,i2,...); //dumb example implementation
}

最后,如果您不喜欢处理模板,您可以改用 lambda,让编译器为您处理。那会给你

auto my_func = [](auto i1, auto i2)
{
std::for_each(i1,i2,...); //dumb example implementation
};

关于c++ - 如何为采用 STL 容器迭代器的函数提供函数签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57575675/

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