我想将存在于容器 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/