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

大規(guī)模高性能網(wǎng)絡(luò)服務(wù)器編程 大型游戲服務(wù)器編程


大規(guī)模高性能網(wǎng)絡(luò)服務(wù)器編程 大型游戲服務(wù)器編程 完成端口模型 TCP UDP P2P 網(wǎng)絡(luò)編程

           C++博客 | 首頁 | 發(fā)新隨筆 | 發(fā)新文章 | 聯(lián)系 | 聚合 | 管理

              

STL容器使用之一:vector


本文原創(chuàng)發(fā)表地址為:http://m.shnenglu.com/kusamba/archive/2010/09/16/126786.html,轉(zhuǎn)載請保留原鏈接,謝謝!

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

技術(shù)要點:

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

2,預(yù)分配內(nèi)存, 調(diào)用reserve函數(shù)

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

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


代碼如下:

  1 /************************************************************************
  2 * vector
  3 *    1, 順序存儲,內(nèi)部數(shù)據(jù)結(jié)構(gòu)為數(shù)組
  4 *    2, 使用之前調(diào)用reserve()預(yù)分配元素數(shù)目,可提高性能
  5 *    3, insert/erase操作效率低,跟被操作元素在vector中的位置成正比
  6 *       在末尾增加或刪除元素所需時間與元素數(shù)目無關(guān),
  7 *       在中間或開頭增加或刪除元素所需時間隨元素數(shù)目呈線性變化
  8 *    4, insert/erase操作將有可能導(dǎo)致vector內(nèi)存重新分配,iterator失效
  9 *    5, 時間復(fù)雜度:
 10 *            隨機索引訪問[index]: O(1)
 11 *            查找:O(n)
 12 */
 13 
 14 /**
 15 * 謂詞表達(dá)式
 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 : 預(yù)分配空間
 36     * capacity: 獲取預(yù)分配空間數(shù)目
 37     * size    : 當(dāng)前元素個數(shù)
 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倍數(shù)元素的后面插入一個元素,值為該元素的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     // 利用計數(shù)插入
 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);//獲取當(dāng)前插入元素的位置
 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     //對于復(fù)雜對象,還可以使用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++技術(shù)

公告

導(dǎo)航

隨筆分類

最新隨筆

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区三区视频在线观看| 99热精品在线| 国产精品v欧美精品v日韩| 亚洲国产高清高潮精品美女| 一区二区三区 在线观看视频| 日韩视频一区二区在线观看| 欧美日韩成人在线视频| 一区二区三区视频在线播放| 99re6这里只有精品视频在线观看| 亚洲一区二区三区免费在线观看| 国产日韩精品久久久| 久久久久国产精品人| 亚洲区在线播放| 久久精品国产清高在天天线| 亚洲欧洲另类| 国产日韩欧美精品一区| 欧美激情按摩| 午夜久久tv| 亚洲电影激情视频网站| 亚洲六月丁香色婷婷综合久久| 久久久久久久综合狠狠综合| 国产一区日韩欧美| 欧美精品成人一区二区在线观看| 亚洲小说区图片区| 亚洲人人精品| 校园春色国产精品| 欧美91福利在线观看| 欧美一区二区三区在线免费观看| 亚洲精品国产品国语在线app| av成人国产| 亚洲电影免费观看高清完整版在线观看 | 亚洲国产日本| 欧美在线网站| 亚洲午夜视频| 久久免费的精品国产v∧| 免费久久精品视频| 欧美一级视频免费在线观看| 99国产欧美久久久精品| 性感少妇一区| 亚洲青涩在线| 久久久久久夜| 国产精品一区视频| 国产日韩欧美黄色| 亚洲美女一区| 免费久久久一本精品久久区| 亚洲天堂黄色| 欧美第一黄网免费网站| 蜜臀av在线播放一区二区三区| 欧美激情第1页| 国模精品一区二区三区| 亚洲调教视频在线观看| 一区二区三区欧美| 99香蕉国产精品偷在线观看| 一区二区三区免费观看| 男人插女人欧美| 激情欧美一区| 国产性色一区二区| 亚洲图片自拍偷拍| 亚洲日本欧美天堂| 免费成人你懂的| 欧美激情精品久久久久久大尺度| 国产三级欧美三级| 亚洲欧美日韩精品久久奇米色影视 | 欧美成人综合| 亚洲黄一区二区三区| 亚洲电影一级黄| 久久久999国产| 欧美日本一道本| 亚洲一区黄色| 欧美一区影院| 欧美69wwwcom| 亚洲三级影片| 欧美淫片网站| 亚洲第一黄色| 裸体丰满少妇做受久久99精品| 国产亚洲精品7777| 国产午夜精品理论片a级探花| 午夜国产不卡在线观看视频| 免费成人黄色| 蜜桃av综合| 99国产精品一区| 99精品视频一区| 国产精品亚洲综合| 亚洲欧洲在线播放| 欧美激情久久久久久| 亚洲天堂成人| 欧美在线欧美在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 99re国产精品| 一区二区三欧美| 国产欧美日韩麻豆91| 久久欧美中文字幕| 欧美成人高清| 亚洲已满18点击进入久久| 亚洲欧洲av一区二区| 欧美剧在线免费观看网站| 在线亚洲成人| 欧美一区二粉嫩精品国产一线天| 狠狠色狠狠色综合日日五| 99精品视频网| 亚洲一区二区三区欧美 | 国产精品美女久久久| 激情综合五月天| 欧美激情免费在线| 国产午夜精品麻豆| 欧美激情第8页| 国产农村妇女精品一二区| 农村妇女精品| 国产精品拍天天在线| 男人的天堂亚洲在线| 国产精品看片资源| 亚洲国产成人午夜在线一区| 欧美午夜欧美| 亚洲国产成人tv| 国产农村妇女精品| 日韩视频免费在线观看| 在线日本高清免费不卡| 久久久爽爽爽美女图片| 欧美日韩亚洲网| 午夜国产精品影院在线观看| 久久九九精品99国产精品| 亚洲图片你懂的| 免费在线观看成人av| 久久高清国产| 国产精品久久久久久久午夜| 亚洲第一在线| 在线观看日韩av先锋影音电影院| 免费成人你懂的| 国产精品网站在线| aa亚洲婷婷| 亚洲一级一区| 欧美日韩中文字幕在线| 亚洲免费一在线| 欧美精品日韩三级| 欧美二区在线看| 极品av少妇一区二区| 久久www成人_看片免费不卡| 午夜电影亚洲| 国产视频一区在线观看| 亚洲欧美日韩国产综合| 午夜视频在线观看一区| 国产精品电影在线观看| 久久精品一区二区三区不卡牛牛| 欧美色综合天天久久综合精品| 亚洲国产一区二区a毛片| 亚洲第一精品福利| 久久亚洲一区二区| 亚洲一区图片| 国产精品丝袜久久久久久app| 亚洲视频久久| 亚洲国产99精品国自产| 9l国产精品久久久久麻豆| av成人国产| 国产精品盗摄久久久| 亚洲一区三区视频在线观看| 欧美一区二区三区在线看| 国产网站欧美日韩免费精品在线观看| 亚洲一区日韩在线| 另类av一区二区| 欧美视频一区二| 亚洲深夜影院| 久久久久久黄| 亚洲另类自拍| 欧美日韩在线一区二区| 亚洲欧美一区二区精品久久久| 久久精品国产久精国产思思| 狠狠狠色丁香婷婷综合激情| 一区二区三区欧美激情| 亚洲在线网站| 久久综合精品国产一区二区三区| 欧美亚洲一区| 免费中文字幕日韩欧美| 99精品视频网| 韩国一区二区三区在线观看| 久久综合久久综合这里只有精品| 午夜精品视频网站| 伊人男人综合视频网| 欧美日韩精品一区| 欧美一区二区三区日韩| 亚洲黄色尤物视频| 欧美一区高清| 亚洲精品美女免费| 国产日韩欧美日韩大片| 欧美巨乳在线| 免费不卡欧美自拍视频| 亚洲欧美国产一区二区三区| 99riav国产精品| 国产一区二区三区的电影 | 午夜久久久久| 亚洲精品国精品久久99热一| 久久精品91| 亚洲影视在线播放| 亚洲国产高清在线观看视频| 国产精品区一区二区三| 欧美日韩成人综合| 欧美www在线| 久久深夜福利免费观看| 香蕉久久国产| 亚洲尤物在线视频观看| 亚洲精品视频在线观看免费|