c++中的常用語法

知識點

  • long long , long , int 的長度:
    • 32位系統:int(4個字節) long(4個字節) long long(8個字節)
    • 64位系統:int(4個字節) long (8個字節) long long(8個字節)
  • 推薦的聲明數組的方法:
    • const int maxn = 100 + 10;
    • int A[maxn];
  • c++中有bool類型,但是c中沒有
  • 注意是在c++中提供了“引用”即 &, 表示參數按照傳遞引用(by reference)的方式傳遞。
  • c語言中的字符串,就是 字符數組
  • 對於非string類型的數組 a,求數組的長度的方法:
    • sizeof(a)/sizeof(a[0]);

引用和指針的區別

  • 指針:是一個變量,存儲的是一個地址
  • 引用:和原變量是一個東西,只不過是變量的一個別名而已
  • 指針和引用的使用形式:
int a = 1; int *p = &a;
int a = 1; int &q = a;
  • 可以有const指針,但是不能有const引用
  • 指針的值可以爲NULL,但是引用的值不能爲空
  • 指針的值在初始化以後可以改變,即其指向的存儲單元,但是引用初始化之後就不能在改變了。
  • sizeof(指針):得到的是指針變量存儲區的大小; sizeof(引用):得到的是原變量存儲區的大小。

String常用函數

  • length()和size()函數的功能是一樣的,都是返回當前字符串的長度
  • empty()判斷字符串是否爲空

Algorithm常用函數

  • min(a,b):返回a,b中的最小值
  • sort(a, a+size): 對數組a進行升序排序;

不定長數組vector

  • vector a就是一個不定長數組。
    • a.size():讀取vector的大小;
    • a.resize():改變vector的大小
    • a.push_back():向尾部添加元素;
    • a.pop_back(): 刪除最後一個元素
    • a.resize(n):將n以後的元素刪除
    • a.resize(n,value): 新分配出的空間用value初始化
    • a.clear(): 清空vector
  • vector 是一個模板類,所以需要使用vector< int >a 或者 vector< double >b 這樣的方式來聲明裏面裝的元素的類型。
  • vector< int > a ; 類似於一個int a[]數組;

    vector<int> b(5,1); //聲明一個大小爲10,初始值爲1的向量
    vector<string> aa;

    aa.push_back("a");
    aa.push_back("b");
    aa.push_back("c");
    cout << "請輸入值"; 

    cin >> aa[2]; //只有當 2號元素已經存在,才能這樣用
    //cin >> aa[3];  錯誤 3號元素不存在 

    //遍歷的方法 
    vector<string>:: iterator iter; 
    for (iter = aa.begin(); iter != aa.end(); iter++) {
        cout << *iter << endl;
    }

    for (int i = 0; i < aa.size(); i++) {
        cout << aa[i] << endl;  //像使用數組一樣,使用vector
    }

    //常用函數

    if(aa.empty()) {
        cout << "向量非空";
    } 

    vector<int>::iterator iter2 = b.begin();
    b.insert(iter2, 1, 3); //在1號元素的前面插入元素 
    b.insert(b.begin(),100);

    for (int i = 0; i < b.size(); i++) 
        cout << b[i] << endl;

    b.erase(b.begin()+1);  //將b.begin() + 1位置上的元素擦除 

集合set

  • 集合中每個元素至多出現一次

映射map

  • map就是從鍵(key)到 值(value)的映射。
  • 因爲重載了[]運算符,map像是數組的”高級版”。使用方法
    map<string, int> name;
    name["aa"] = 1;
    name["bb"] = 2;
    map<string,int>:: iterator iter;
    for (iter = name.begin(); iter != name.end(); iter++) {
        cout << iter->first << " " << iter ->second << endl;
    }  

    cout << name["bb"]; //輸出爲 2
    cout <<name.count("bb"); //輸出爲 1

    //即查看鍵爲bb的鍵值對是否存在,如果存在,返回爲1,如果不在返回爲0,同時可以使用下面的方法,當bb不存在的時候,返回的是超過map末端的迭代器
    iter = name.find("bb");
    if (iter == name.end()) {
        cout << "不存在 ";
    }

    //刪除某個元素
    name.erase("bb");
  • 注意,參看某個鍵值對是否存在,一定不要使用下面的方式,因爲這樣會向map中插入元素
cout << name_map["bb"];
  • map和set都支持insert, find, count 和remove 操作, 並且可以按照從小到大順序循環遍歷其中的元素。
  • map也被稱作是“關聯數組”。

棧、隊列與優先隊列

大整數類

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章