说明:下面3个使用说明
第一个:是把数组拷贝到v里面,使用的 std::back_insert 模板函数,咱们可以进模板函数查看:
template<typename _Container>
479 inline back_insert_iterator<_Container>
480 back_inserter(_Container& __x)
481 { return back_insert_iterator<_Container>(__x); }
其实是使用的 std::back_insert_iterator 适配器,
第二个:把数组拷贝到v2里面,使用的是std::back_insert_iterator适配器,其实和上面一样,只是上面封装了,使用起来也方便
第三个:把数据通过 std::ostream_iterator传输到 std::cout也就是屏幕上面。
2 #include <iterator>
3 #include <vector>
4 #include <list>
5
6 using std::vector;
7 using std::list;
8
9 int main()
10 {
11 int arr[]={1,2,3,4,5,6,7,8,9,0};
12 vector<int> v;
13 vector<int> v2;
14 list<int> l;
15
16
17 std::copy(arr,arr+sizeof(arr)/sizeof(int), std::back_inserter(v));
18
19 typedef std::ostream_iterator<int> ostreamIter;
20
21 std::cout<<"vector 使用std::back_inserter模板函数:\n";
22 std::copy(v.begin(), v.end(), ostreamIter(std::cout, "\t"));
23
24 std::cout<<std::endl;
25
26 typedef std::back_insert_iterator< vector<int> > backItsertIter;
27 std::copy(arr, arr+sizeof(arr)/sizeof(int), backItsertIter(v2));
28
29 std::cout<<"vector 使用std::back_inserter_iterator适配器:\n";
30 std::copy(v2.begin(), v2.end(), ostreamIter(std::cout, "\t"));
31
32 std::cout<<std::endl;
33
34 std::copy(v.begin(), v.end(), std::back_inserter(l));
35 std::cout<<"list :\n";
36 std::copy(l.begin(), l.end(), ostreamIter(std::cout, "\t"));
37 std::cout<<std::endl;
38
39
40 return 0;
41 }
$ ./a.out
vector 使用std::back_inserter模板函数:
1 2 3 4 5 6 7 8 9 0
vector 使用std::back_inserter_iterator适配器:
1 2 3 4 5 6 7 8 9 0
list :
1 2 3 4 5 6 7 8 9 0