督促讀書,總結精華,提煉筆記,拋磚引玉,有不合適的地方,歡迎留言指正。
問題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、指針的理解,以及和迭代器的區別
指針是一種復合數據類型,指向某種類型的對象,可以作為數組的迭代器。指針用來指向單個的對象,可以通過指針間接訪問對象,而迭代器只能訪問容器內的元素!