督促讀書,總結精華,提煉筆記,拋磚引玉,有不合適的地方,歡迎留言指正。
問題1、我們知道,將一個數組賦給另一個數組,就是將一個數組的元素逐個賦值給另一數組的對應元素,相應的,將一個vector 賦給另一個vector,也是將一個vector 的元素逐個賦值給另一vector 的對應元素:
//將一個vector 賦值給另一vector,使用迭代器訪問vector 中的元素
vector<int> ivec(10, 20);
vector<int> ivec1;
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++) {
ivec1.push_back(*iter);
}
問題2、編寫程序判斷兩個數組是否相等,然後編寫一段類似的程序比較兩個vector。
1 #include <iostream>
2 #include <string>
3 #include <vector>
4 using std::string;
5 using std::vector;
6 using std::cin;
7 using std::cout;
8 using std::endl;
9
10 int main(void)
11 {
12 const int size_array = 5;
13 int arr1[size_array];
14 int arr2[size_array];
15
16 cout << "輸入數組 arr1的元素,個數為" << size_array << endl;
17
18 for (int i = 0; i != size_array; i++) {
19 cin >> arr1[i];
20 }
21
22 cout << "輸入數組 arr2的元素,個數為" << size_array << endl;
23
24 for (int i = 0; i != size_array; i++) {
25 cin >> arr2[i];
26 }
27
28 //比較大小
29 for (int i = 0; i != size_array; i++) {
30 if (arr2[i] != arr1[i]) {
31 cout << "數組 arr1和2不相等!" << endl;
32
33 return 0;
34 }
35 }
36
37 cout << "數組 arr1和2相等!" << endl;
38
39 return 0;
40 }
輸入數組 arr1的元素,個數為5
1
2
3
4
5
輸入數組 arr2的元素,個數為5
1
2
3
4
5
數組 arr1和2相等!
Program ended with exit code: 0
or
輸入數組 arr1的元素,個數為5
1
2
3
1
2
輸入數組 arr2的元素,個數為5
1
2
3
4
5
數組 arr1和2不相等!
Program ended with exit code: 0
vector 容器比較大小,這注意,vector 容器和數組的不同之處!vector 容器動態變大小,可以求的長度,可以在尾部直接插入元素。
1 #include <iostream>
2 #include <string>
3 #include <vector>
4 using std::string;
5 using std::vector;
6 using std::cin;
7 using std::cout;
8 using std::endl;
9
10 int main(void)
11 {
12 vector<string> svec1;
13 vector<string> svec2;
14 string str;
15
16 cout << "輸入字符串,作為容器 vector1 的元素,輸入 off 結束!" << endl;
17 cin >> str;
18
19 while(str != "off")
20 {
21 svec1.push_back(str);
22 cin >> str;
23 }
24
25 cout << "輸入字符串,作為容器 vector2 的元素,輸入 off 結束!" << endl;
26 cin >> str;
27
28 while(str != "off")
29 {
30 svec2.push_back(str);
31 cin >> str;
32 }
33 //比較長短,對於 vector 容器,需要注意下,容器是可變長的
34 if(svec1.size() != svec2.size())
35 {
36 cout << "兩個容器不等!" << endl;
37 }
38 //要麼長度相等,要麼不等,如果相等,則假如都為0
39 else if (svec2.size() == 0)
40 {
41 cout << "兩個容器相等!" << endl;
42 }
43 //如果相等且不為0,則比較元素
44 else
45 {
46 vector<string>::iterator iter1;
47 vector<string>::iterator iter2;
48 iter1 = svec1.begin();
49 iter2 = svec2.begin();
50
51 while(*iter1 == *iter2 && iter1 != svec1.end() && iter2 != svec2.end())
52 {
53 iter2++;
54 iter1++;
55 }
56 //如果元素都相等的話,必然是兩個迭代器都同時指向了末位的後一位
57 if(iter1 == svec1.end())
58 {
59 cout << "容器相等!" << endl;
60 }
61 else{
62 cout << "容器不等!" << endl;
63 }
64 }
65
66 return 0;
67 }
問題3、指針的理解,以及和迭代器的區別
指針是一種復合數據類型,指向某種類型的對象,可以作為數組的迭代器。指針用來指向單個的對象,可以通過指針間接訪問對象,而迭代器只能訪問容器內的元素!