您的位置:首页 > 运维架构

stl算法copy

2015-12-23 10:17 330 查看
说明:下面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也就是屏幕上面。

1 #include <iostream>

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: