通过传递输出迭代器从函数填充 std::[container]

2023-12-07

我想通过传递输出迭代器从函数内部填充容器,因为据我所知,这是最有效的方法。例如

template <typename OutputIterator>
void getInts(OutputIterator it)
{
   for (int i = 0; i < 5; ++i)
     *it++ = i;
}

(返回 std::list 成本高昂吗?)

但是我如何强制迭代器应该指向的类型?基本上我想说“这个函数采用 boost::tuple 类型的输出迭代器”。


您可以使用升压::enable_if和这个结合std:迭代器特征 :

#include <boost/type_traits/is_same.hpp>
#include <boost/utility/enable_if.hpp>

template <typename OutputIterator>
typename boost::enable_if<
    boost::is_same<
        int, /* replace by your type here */
        typename std::iterator_traits<OutputIterator>::value_type
    >
>::type getInts(OutputIterator it)
{
   for (int i = 0; i < 5; ++i)
     *it++ = i;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过传递输出迭代器从函数填充 std::[container] 的相关文章

随机推荐