C++數據結構

向量vectorios

  vector是線性順序結構,在內存中順序連續存儲,至關於數組。可是它是動態的,其大小和數據存儲類型須要指定,並且大小能夠自動或手動擴展。數組

幾個必須先了解的方法和概念:數據結構

  capacity() —— 獲得容器的容量,在用push_back()方法添加數據時,它會根據須要自動擴充,也能夠由reserve()方法手動擴充;,可是每次自動擴容,它都會從新申請一塊更大的動態內存,並複製原數據到新的內存區,所以,最好由須要手動設置;函數

  size() —— 獲得容器實際含有的元素個數,添加元素時,若元素個數將要超出容量值,容器的容量會自動擴充;spa

  begin(),end()分別返回指向數組首端和末端的迭代器,在這裏就是指針。3d

#include <vector>
#include <stdio.h>
using namespace std;
void
testVector() { vector<int> ver01;
//-------------- reserve()方法手動設置容器的容量 ---------- ver01.reserve(
8); /*-------------- 在末尾添加數據,相似於棧的入棧操做 -----------------------
*--------------- 若是vector的容量不夠,則自動擴充,通常按1.5或2倍擴充: 4, 8, 16 ... ------
*/
ver01.push_back(
30); ver01.push_back(60); ver01.push_back(10);
ver01.push_back(70);
//-------------- 在指定的位置插入數據,其後的數據自動依次日後挪 -------- ver01.insert(ver01.begin()
+1, 40); ///------------- 刪除末尾的一個數據(70),也能夠用 erase() 刪除若干連續的元素 --------------- ver01.pop_back(); //*/ printf("length: %d\nsize: %d\n", ver01.capacity(), ver01.size()); for(int i = 0; i < ver01.size(); i++) { cout<<ver01[i]<<endl; } }

函數testVector()的調用結果:指針

 

 

集合Setcode

  set集合是無重、實現了紅黑樹的平衡二叉檢索樹的數據結構,每次插入數據時,它會調整二叉樹數據排列,以保證每一個樹節點鍵值大於左子樹結點鍵值,小於右子樹結點鍵值,並且根結點的左子樹和右子樹高度一致。blog

  通常構造set數據結構是爲了檢索,它使用中序遍歷法,檢索的效率高於vector、list、queue等;內存

#include <set>
#include <iostream>
void testSet()
{
    set<int> set01;

    set01.insert(43);
    set01.insert(25);
    set01.insert(17);
    set01.insert(66);
    set01.insert(82);
    set01.insert(51);

    set<int>::iterator it;
    for(it = set01.begin(); it!=set01.end(); it++)
    {
        cout<<*it<<endl;
    }
}

 函數testSet()的調用結果是:

 

  insert()--在集合中插入元素

  begin()--返回指向第一個元素的迭代器

  end()--返回指向最後一個元素的迭代器

  clear()--清除全部元素

  erase()--刪除集合中的元素

  count()--返回某個值元素的個數

  empty()--若是集合爲空,返回true

  find()--返回一個指向被查找到元素的迭代器

  equal_range()--返回集合中與給定值相等的上下限的兩個迭代器

  size()--集合中元素的數目

  max_size()--返回集合能容納的元素的最大限值

  swap()--交換兩個集合變量

  get_allocator()--返回集合的分配器

  lower_bound()--返回指向小於(或等於)某值的第一個元素的迭代器

  upper_bound()--返回大於某個值元素的迭代器

  rbegin()--返回指向集合中最後一個元素的反向迭代器

  rend()--返回指向集合中第一個元素的反向迭代器

  key_comp()--返回一個用於元素間值比較的函數

  value_comp()--返回一個用於比較元素間的值的函數

 

映射 map

   映射即具備鍵——值對應關係的數據結構,定義形式:map<key,value>;

#include <map>
#include <iostream>
using namespace std;
void testMap()
{
    map<int,char*> map01;
    map<int,char*>::iterator it;
//---------------------- 在 map 中,數 據 按 key 的 值 升 序 排 列 -------------
//---------------------- 下 面 是 map 的 三 種 插 入 鍵 值 對 的 方式 ----------
map01[
12] = "abcdef"; map01.insert(pair<int,char*>(8,"defghi")); map01.insert(map<int,char*>::value_type(17,"fghijkl")); //----------------------- 遍 歷 map 所 有 的 鍵 值 對 ------- for(it = map01.begin(); it != map01.end(); it++) cout<<it->first<<"\t"<<it->second<<endl;
//---------- find() 方 法:通 過 鍵 key 查 找 value,返 回 值 是 一 個 迭 代 器 iterator ------ it
= map01.find(12); if(it != map01.end()) { cout<<"found!"<<endl; //---------------- erase() 方 法 刪 除 一 對 鍵 值 ---------- map01.erase(it); it = map01.find(12); if(map01.end() == map01.find(12)) cout<<"Not found!"<<endl; } }

 函數testMap()的調用結果:

相關文章
相關標籤/搜索