cb14a_c++_顺序容器的操作7_赋值与交换(swap)_vector转list

cb14a_c++_顺序容器的操作7_赋值与交换(swap)

vector数据赋值给list,

 slist.assign(svec.begin(), svec.end());//这样可以转 svec->slist


c1=c2; //c2容器的数据赋值给c1
c1.swap(c2); //c1与c2数据交换
c.assign(b,e); //用于赋值,类型兼容就可以

svec.assign(slist.begin(), slist.end()); //string不能转成字符指针,指针可以转string
error C2440: “=”: 无法从“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”转换为“const char *”
slist.assign(svec.begin(), svec.end());//这样可以转

c.assign(n,t),指定数量的数据,重新进行赋值。 slist.assign(10,"nice"); 给slist 容器直接赋值10个nice.
使用assign:类型兼容即可
使用swap:类型必须相同

 1 /*cb14a_c++_顺序容器的的操作7_赋值与交换(swap)
 2 c1=c2; //c2容器的数据赋值给c1
 3 c1.swap(c2); //c1与c2数据交换
 4 c.assign(b,e); //用于赋值,类型兼容就可以
 5 
 6 svec.assign(slist.begin(), slist.end()); //string不能转成字符指针,指针可以转string
 7 error C2440: “=”: 无法从“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”转换为“const char *”
 8 slist.assign(svec.begin(), svec.end());//这样可以转
 9 
10 c.assign(n,t),指定数量的数据,重新进行赋值。 slist.assign(10,"nice"); 给slist 容器直接赋值10个nice.
11 使用assign:类型兼容即可
12 使用swap:类型必须相同
13 
14 
15 */
16 
17 #include <iostream>
18 #include <vector>
19 #include <list>
20 #include <deque>
21 #include <string>
22 
23 using namespace std;
24 
25 int main()
26 {
27     vector<int> a;
28     vector<int> b;
29     vector<int> c;
30 
31     vector<const char *> svec;
32     list<string> slist;
33 
34     svec.push_back("apple");
35     svec.push_back("big");
36     svec.push_back("cat");
37 
38     slist.push_back("c");
39     slist.push_back("c++");
40     slist.push_back("java");
41     slist.push_back("c#");
42 
43     //svec.assign(slist.begin(), slist.end()); //string不能转成字符指针,指针可以转string
44     cout << "指针转string操作:" << endl; 
45     slist.assign(svec.begin(), svec.end());//这样可以转 svec->slist
46     for(list<string>::iterator iter=slist.begin();iter!=slist.end();++iter)
47         cout << *iter << endl;
48 
49     cout << "给slist容器重新赋值2个nice:" << endl;
50     slist.assign(2, "nice");
51     for (list<string>::iterator iter = slist.begin(); iter != slist.end(); ++iter)
52         cout << *iter << endl;
53 
54 
55 
56     a.push_back(10);
57     a.push_back(20);
58     a.push_back(30);
59     a.push_back(40);
60 
61     b.push_back(100);
62     b.push_back(200);
63     b.push_back(300);
64 
65     c.push_back(1);
66     c.push_back(2);
67     c.push_back(3);
68     c.push_back(4);
69     c.push_back(5);
70     c.push_back(6);
71 
72 
73     a.swap(b); //a与b的数据交换
74     cout << "交换后,容器a的数据" << endl;
75     for (vector<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
76         cout << *iter << endl;
77 
78     a = b; //b容器的数据赋值给a
79 
80     cout << "b容器的数据赋值给a" << endl;
81     
82     for (vector<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
83         cout << *iter << endl;
84 
85     vector<int>::iterator f = c.begin();
86     ++f;
87     ++f;
88     vector<int>::iterator e = c.end();
89     --e;
90     cout << "把迭代器f到e之间的数据赋值给a." << endl;
91     a.assign(f, e); //把迭代器f到e之间的数据赋值给a.
92     //a.assign(c.begin(), c.end());//c的数据赋值给容器a
93 
94     for (vector<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
95         cout << *iter << endl;
96 
97 
98     return 0;
99 }
欢迎讨论,相互学习。 txwtech@163.com
原文地址:https://www.cnblogs.com/txwtech/p/12317531.html