程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 把《c++ primer》讀薄(4-2 c和c++的數組 和 指針初探),《cprimer》4-2

把《c++ primer》讀薄(4-2 c和c++的數組 和 指針初探),《cprimer》4-2

編輯:C++入門知識

把《c++ primer》讀薄(4-2 c和c++的數組 和 指針初探),《cprimer》4-2


督促讀書,總結精華,提煉筆記,拋磚引玉,有不合適的地方,歡迎留言指正。

問題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

數組 arr12相等!

Program ended with exit code: 0

or

輸入數組 arr1的元素,個數為5

1

2

3

1

2

輸入數組 arr2的元素,個數為5

1

2

3

4

5

數組 arr12不相等!

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、指針的理解,以及和迭代器的區別

指針是一種復合數據類型,指向某種類型的對象,可以作為數組的迭代器。指針用來指向單個的對象,可以通過指針間接訪問對象,而迭代器只能訪問容器內的元素!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved