青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大規模高性能網絡服務器編程 大型游戲服務器編程


大規模高性能網絡服務器編程 大型游戲服務器編程 完成端口模型 TCP UDP P2P 網絡編程

           C++博客 | 首頁 | 發新隨筆 | 發新文章 | 聯系 | 聚合 | 管理

              

STL容器使用之一:vector


本文原創發表地址為:http://m.shnenglu.com/kusamba/archive/2010/09/16/126786.html,轉載請保留原鏈接,謝謝!

std::vector作為順序容器,具有如下特點:
/************************************************************************
* vector
*    1, 順序存儲,內部數據結構為數組
*    2, 使用之前調用reserve()預分配元素數目,可提高性能
*    3, insert/erase操作效率低,跟被操作元素在vector中的位置成正比
*       在末尾增加或刪除元素所需時間與元素數目無關,
*       在中間或開頭增加或刪除元素所需時間隨元素數目呈線性變化
*    4, insert/erase操作將有可能導致vector內存重新分配,iterator失效
*    5, 時間復雜度:
*            隨機索引訪問[index]: O(1)
*            查找:O(n)
*    by Kusamba@126.com    http://m.shnenglu.com/kusamba
*/

技術要點:

1,加載頭文件
#include <vector>
using namespace std;

2,預分配內存, 調用reserve函數

3, 插入對象,使用push_back或[index]

4, insert/erase 如何避免iterator失效


代碼如下:

  1 /************************************************************************
  2 * vector
  3 *    1, 順序存儲,內部數據結構為數組
  4 *    2, 使用之前調用reserve()預分配元素數目,可提高性能
  5 *    3, insert/erase操作效率低,跟被操作元素在vector中的位置成正比
  6 *       在末尾增加或刪除元素所需時間與元素數目無關,
  7 *       在中間或開頭增加或刪除元素所需時間隨元素數目呈線性變化
  8 *    4, insert/erase操作將有可能導致vector內存重新分配,iterator失效
  9 *    5, 時間復雜度:
 10 *            隨機索引訪問[index]: O(1)
 11 *            查找:O(n)
 12 */
 13 
 14 /**
 15 * 謂詞表達式
 16 */
 17 struct sComplexObj 
 18 {
 19     int  nID;
 20     char szNickName[32];
 21 };
 22 bool Equal_ID(sComplexObj obj)
 23 {
 24     return obj.nID == 4 ? true : false;
 25 }
 26 
 27 /**
 28 * 測試代碼
 29 */
 30 void vector_test()
 31 {
 32     vector<int> vInt;
 33 
 34     /**
 35     * reserve : 預分配空間
 36     * capacity: 獲取預分配空間數目
 37     * size    : 當前元素個數
 38     */
 39     int nCapacity = 0, nSize = 0;
 40     nCapacity = vInt.capacity();
 41 
 42     vInt.reserve(10);
 43     nSize = vInt.size();
 44 
 45     /**
 46     * insert
 47     */
 48     for (int i = 0; i < 10++i)
 49     {
 50         vInt.push_back(i + 1);
 51     }
 52     for (int i = 0; i < 10++i)
 53     {
 54         vInt[i] = vInt[i] * 2;
 55     }
 56 
 57     // insert: 在4倍數元素的后面插入一個元素,值為該元素的2倍
 58 
 59     // 錯誤的做法
 60     ////for (vector<int>::iterator it = vInt.begin(); it != vInt.end(); ++it)
 61     ////{
 62     ////    if (*it % 4 == 0)
 63     ////    {
 64     ////        vInt.insert(it, *it * 2);-->it失效
 65     ////        //重新分配了空間,it和begin(), end()均失效
 66     ////    }
 67     ////}
 68 
 69     // 利用計數插入
 70     for (int i = 0; i < vInt.size(); ++i)
 71     {
 72         if (vInt[i] % 4 == 0)
 73         {
 74             vInt.insert(vInt.begin() + i + 1, vInt[i] * 2);
 75             i += 1;
 76         }
 77     }
 78     // 利用iterator以及insert返回的被插入元素的位置
 79     for (vector<int>::iterator it = vInt.begin(); it != vInt.end(); ++it)
 80     {
 81         if (*it % 3 == 0)
 82         {
 83             it = vInt.insert(it + 1*it * 2);//獲取當前插入元素的位置
 84         }
 85     }
 86 
 87     /**
 88     * erase
 89     */
 90     for (vector<int>::iterator it = vInt.begin(); it != vInt.end(); )
 91     {
 92         if (*it % 2 == 0)
 93         {
 94             it = vInt.erase(it);//返回end()或后一個元素的新位置
 95         }
 96         else
 97         {
 98             ++it;
 99         }
100     }
101 
102     //使用謂詞 只能刪除一次
103     vInt.erase(remove(vInt.begin(), vInt.end(), 4));
104 
105     //對于復雜對象,還可以使用remove_if算法
106     {
107         vector<sComplexObj> vComplexObj;
108         for (int i = 0; i < 10++i)
109         {
110             sComplexObj obj;
111             obj.nID = i;
112             sprintf_s(obj.szNickName, "ID_%06d", i);
113             vComplexObj.push_back(obj);
114         }
115         vComplexObj.erase(remove_if(vComplexObj.begin(), vComplexObj.end(), Equal_ID));
116     }
117 
118     /**
119     * traverse
120     */
121     printf("print vInt method1: ");
122     for (int i = 0; i < vInt.size(); ++i)
123     {
124         printf("%d ", vInt[i]);
125     }
126     printf("\n");
127 
128     printf("print vInt method2: ");
129     for (vector<int>::iterator it = vInt.begin(); it != vInt.end(); ++it)
130     {
131         printf("%d "*it);
132     }
133     printf("\n");
134 }

posted on 2010-09-16 17:22 iKusamba 閱讀(2398) 評論(0)  編輯 收藏 引用 所屬分類: C++技術

公告

導航

隨筆分類

最新隨筆

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品国产三级国产aⅴ9色| 一区二区三区免费在线观看| 性欧美xxxx大乳国产app| 亚洲欧美综合一区| 国产亚洲精品激情久久| 久久久不卡网国产精品一区| 另类专区欧美制服同性| 夜夜嗨网站十八久久| 国产精品视屏| 久久综合伊人| 一区二区三区成人| 亚洲在线中文字幕| 久久在线免费观看视频| 亚洲一区中文字幕在线观看| 国产日韩精品一区二区| 欧美日韩 国产精品| 亚洲一区二区在线观看视频| 蜜桃伊人久久| 欧美在线观看日本一区| 91久久亚洲| 国产精品亚洲综合| 激情综合视频| 国产精品一区二区三区久久| 欧美剧在线免费观看网站| 久久精品国产一区二区三区| 欧美~级网站不卡| 久久精品成人一区二区三区| 亚洲视频在线视频| 亚洲欧洲综合| 国产美女精品视频免费观看| 曰韩精品一区二区| 国产精品揄拍一区二区| 国产综合欧美| 国产欧美一区二区三区久久人妖 | 美国成人直播| 香蕉久久国产| 欧美大片91| 亚洲自拍16p| 亚洲第一毛片| 国模 一区 二区 三区| 亚洲免费观看在线观看| 91久久综合| 欧美一区二区三区在线视频| 亚洲人精品午夜在线观看| 亚洲国产精品久久久久秋霞不卡| 六月婷婷久久| 亚洲欧美日韩国产综合| 久久av在线| 久久久午夜电影| 麻豆精品传媒视频| 国产日韩亚洲欧美| 国产小视频国产精品| 一区二区91| 91久久综合亚洲鲁鲁五月天| 久久在线免费观看视频| 韩国一区二区三区美女美女秀| 国产一区二区日韩| 午夜精品美女久久久久av福利| 免费欧美日韩| 久久精品一区二区三区不卡| 欧美视频专区一二在线观看| 国产精品视频yy9299一区| 亚洲一区二区在线看| 99视频一区二区三区| 香蕉成人伊视频在线观看| 欧美日韩综合视频网址| 中文日韩在线视频| 久久国产精品黑丝| 欧美大片免费观看在线观看网站推荐 | 一区二区三区视频在线看| 亚洲综合第一页| 一区二区三区福利| 国产精品视频网| 欧美一级视频| 91久久精品一区| 欧美另类videos死尸| 亚洲一区久久久| 亚洲一区综合| 伊人蜜桃色噜噜激情综合| 亚洲第一精品久久忘忧草社区| 日韩视频在线免费观看| 欧美亚洲视频在线观看| 久久久久久网| 亚洲日本va午夜在线电影| 亚洲人成欧美中文字幕| 国产精品久久久久久一区二区三区| 国产欧美日韩麻豆91| 久久亚洲春色中文字幕| 久久午夜精品一区二区| 国产午夜精品美女毛片视频| 久久久久久久97| 一区二区三区av| 亚洲一区二区在线播放| 久久视频在线视频| 亚洲福利视频免费观看| 久久爱另类一区二区小说| 久久精品人人做人人爽| 亚洲黄色小视频| 久久性色av| 欧美精品在线视频| 久久国产黑丝| 欧美日韩亚洲一区二区三区| 亚洲第一区在线观看| 99国产精品久久久久老师| 国产美女精品在线| 亚洲人成网站色ww在线| 国产亚洲欧美一区二区三区| 日韩视频在线观看| 亚洲大胆美女视频| 亚洲欧美日韩国产综合| 亚洲午夜免费福利视频| 亚洲精品久久久久久下一站| 国产一区二区三区的电影| 亚洲美女av电影| 欧美日韩一卡二卡| 麻豆成人综合网| 国产精品一区二区男女羞羞无遮挡 | 亚洲女性裸体视频| 亚洲乱亚洲高清| 久久久久九九九| 欧美中文字幕在线| 国产精品高清网站| 亚洲欧洲一区二区在线播放| 激情久久一区| 欧美一区二区视频观看视频| 亚洲午夜精品久久| 欧美伦理影院| 亚洲国产日日夜夜| 18成人免费观看视频| 久久av老司机精品网站导航| 久久成人国产精品| 国产欧美在线视频| 香蕉尹人综合在线观看| 亚洲欧美日韩在线观看a三区| 亚洲欧美高清| 小辣椒精品导航| 欧美日韩视频不卡| 一区二区三区欧美在线| 亚洲专区在线| 国产精品日韩精品| 午夜视黄欧洲亚洲| 久久国产精品毛片| 久久视频这里只有精品| 久久亚洲不卡| 亚洲激情网站免费观看| 欧美成人精品影院| 亚洲精品美女| 亚洲欧美日韩在线高清直播| 国产噜噜噜噜噜久久久久久久久| 亚洲一区二区三区精品在线| 欧美尤物巨大精品爽| 狠狠色综合色综合网络| 你懂的一区二区| av成人毛片| 欧美插天视频在线播放| 日韩一级大片| 99成人免费视频| 一区二区三区欧美在线观看| 欧美日韩一区二区精品| 亚洲精品裸体| 午夜天堂精品久久久久| 国产在线精品一区二区夜色| 久久久久久久综合日本| 亚洲韩国青草视频| 亚洲欧美影音先锋| 精品动漫3d一区二区三区免费| 老司机免费视频一区二区| 亚洲精品你懂的| 久久久成人精品| 99视频国产精品免费观看| 国产精品欧美经典| 蜜桃av一区二区| 亚洲一级高清| 免费观看成人www动漫视频| 亚洲一区三区在线观看| 伊人久久综合| 国产精品久久久久毛片大屁完整版| 欧美一区二区成人| 最近中文字幕日韩精品| 久久国产精品久久久| 亚洲激情视频在线| 国产日韩欧美一区在线| 欧美日韩国产限制| 久久艳片www.17c.com| 亚洲综合激情| 亚洲精品久久久一区二区三区| 久久精品99久久香蕉国产色戒| 亚洲日本理论电影| 久久久欧美一区二区| 一区二区三区欧美日韩| 欧美激情二区三区| 最新国产成人在线观看| 国产精品美女久久久| 蜜臀久久久99精品久久久久久| 在线视频精品一区| 亚洲影院在线观看| 亚洲国产三级网| 精品动漫3d一区二区三区| 国产欧美日韩专区发布| 黑丝一区二区|