插入迭代器 std::inserter、std::front_inserter、std::back_inserter均定义于头文件<iterator>.
一 申明
std::inserter要求容器支持 insert 操作。c表示容器,i表示将插入位置的迭代器。
template< class Container >
std::insert_iterator<Container>
inserter( Container& c, typename Container::iterator i ); (C++20 前)
template< class Container >
constexpr std::insert_iterator<Container>
inserter( Container& c, ranges::iterator_t<Container> i ); (C++20 起)
std::front_inserter要求容器支持 push_front 操作。c表示容器。
template< class Container >
std::front_insert_iterator<Container> front_inserter( Container& c ); (C++20 前)
template< class Container >
constexpr std::front_insert_iterator<Container> front_inserter( Container& c ); (C++20 起)
std::back_inserter要求容器支持 push_back 操作。c表示容器。
template< class Container >
std::back_insert_iterator<Container> back_inserter( Container& c ); (C++20 前)
template< class Container >
constexpr std::back_insert_iterator<Container> back_inserter( Container& c ); (C++20 起)
二 举例
#include <iterator>
#include <algorithm>
#include <string>
#include <deque>
#include <iostream>
int main() {
deque<int> d;
std::fill_n(std::front_inserter(d), 1, 1);
std::fill_n(std::front_inserter(d), 1, 2);
std::fill_n(std::front_inserter(d), 1, 3);
std::fill_n(std::back_inserter(d), 1, 4);
std::fill_n(std::back_inserter(d), 1, 5);
std::fill_n(std::back_inserter(d), 1, 6);
std::fill_n(std::inserter(d, d.begin() + 3), 1, 100);
for(auto str : d)
std::cout << str << " ";
std::cin.get();
return 0;
}
输出: 3 2 1 100 4 5 6
三 参考
cppreference: std::inserter std::front_inserter std::back_inserter