C++之插入迭代器
C++的迭代器适配器中常用的有插入迭代器(Inser Iterator)、流迭代器(Stream Iterator)和逆向迭代器(Reverse Iterator)等!
本文主要是介绍插入迭代器(Inser Iterator).下面介绍三种插入迭代器:
1.Back Inserter
原理:其内部调用push_back()
功能:在容器的尾端插入元素
限制:只有提供了push_back()成员函数的容器中,back inserter才能派上用场
适用:vector deque list
2.Front Inserter
原理:其内部调用push_front()
功能:在容器的前端插入元素
限制:只有提供了push_front()成员函数的容器中,front inserter才能派上用场
适用:deque list
3.Inserter
原理:其内部调用insert()
功能:在容器的指定位置插入元素
限制:只有提供了insert()成员函数的容器中,inserter才能派上用场. 所有STL容器都提供了insert()函数.
适用:所有STL容器
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 #include <iterator> 6 #include <set> 7 8 int main() { 9 10 typedef std::list<int> IntList; 11 IntList intList; 12 IntList::const_iterator listIt; 13 for(int i = 1; i <= 9; ++i) { 14 intList.push_back(i); 15 } 16 std::cout << "list data:\n"; 17 for(listIt = intList.begin(); listIt != intList.end(); ++listIt) { 18 std::cout << *listIt << ' '; 19 } 20 21 typedef std::vector<int> IntVector; 22 IntVector intVector; 23 IntVector::const_iterator vectorIt; 24 copy(intList.begin(), intList.end(), back_inserter(intVector)); ///back inserter 25 std::cout<<"\nvector data:\n"; 26 for(vectorIt = intVector.begin(); vectorIt != intVector.end(); ++vectorIt) { 27 std::cout << *vectorIt << ' '; 28 } 29 30 copy(intList.begin(), intList.end(), inserter(intVector, intVector.begin() + 5)); ///inserter (container pos_iter) 31 std::cout << "\nvector data after insert:\n"; 32 for(vectorIt = intVector.begin(); vectorIt != intVector.end(); ++vectorIt){ 33 std::cout << *vectorIt << ' '; 34 } 35 36 typedef std::deque<int> IntDeque; 37 IntDeque intDeque; 38 IntDeque::const_iterator dequeIt; 39 copy(intList.begin(), intList.end(), front_inserter(intDeque)); ///front inserter 40 copy(intList.begin(), intList.end(), inserter(intDeque, intDeque.begin() + 5)); ///inserter 41 std::cout << "\ndeque data:\n"; 42 for(dequeIt = intDeque.begin(); dequeIt != intDeque.end(); ++dequeIt) { 43 std::cout << *dequeIt << ' '; 44 } 45 46 typedef std::set<int> IntSet; 47 IntSet intSet; 48 IntSet::const_iterator setIt; 49 copy(intList.begin(), intList.end(), inserter(intSet, intSet.begin())); ///inserter 50 std::cout << "\nset data:\n"; 51 for(setIt = intSet.begin(); setIt != intSet.end(); ++setIt) { 52 std::cout << *setIt << ' '; 53 } 54 55 return 0; 56 }
posted on 2015-01-21 17:42 sponge_wxy 阅读(125) 评论(0) 收藏 举报
浙公网安备 33010602011771号