gpt4 book ai didi

c++ - 使用迭代器将 N 个元素从一个容器插入到另一个容器

转载 作者:行者123 更新时间:2023-11-30 03:39:46 25 4
gpt4 key购买 nike

我想将存在于容器 A 中的元素插入到容器 B 中,其方式等同于以下内容:

auto iter = /* iterator from somewhere in A */
for (auto i=0; i<N && iter++ != A.cend(); i++)
B.push_back(*iter);

但是使用 insert 而不是 for 循环,就像这样;

B.insert(B.end(), iter, iter + N);

最佳答案

#include <algorithm>
#include <iterator>

auto a_iter = /* iterator from somewhere in A */, a_end = A.end();
std::copy_n(a_iter, std::min(N, std::distance(a_iter, a_end)), std::inserter(B, B.end()));

作为一个独立的算法:

template<typename IterT, typename CollT>
std::insert_iterator<CollT> insert_n(
IterT a_iter, IterT a_end,
typename std::iterator_traits<IterT>::difference_type N,
CollT& B
) {
return std::copy_n(
a_iter,
std::min(N, std::distance(a_iter, a_end)),
std::inserter(B, B.end())
);
}

关于c++ - 使用迭代器将 N 个元素从一个容器插入到另一个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555502/

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