c++泛型編程

          1 Standard Template Library (STL)主要有兩種組件構(gòu)成,一時(shí)容器container 另一種組件是 操作
          ?這些容器類的泛型算法
          ?1 vector and list 是序列是容器
          ?2 map 是一對keyvalue 組合 3 set 其中僅含有key 我們對它驚醒查詢操作。主要是判斷某之是否存在其中。
          2 指針的算術(shù)運(yùn)算
          ?當(dāng)數(shù)組被傳遞給函數(shù),僅有第一個(gè)元素的地址會(huì)被傳遞
          ?template <typename elemType>
          ?elemType * find(const elemType *array,int size,const elemType &value)
          ?{
          ?? if(!array||size<1)
          ??? return 0;
          ?? for(int i=0;i<size;i++)
          ?? {
          ????? if(array[i]==value)
          ?????? return &array[i];
          ?? }
          ?? /*
          ??? for(int i=0;i<size;i++,array++)
          ?? {
          ????? if(*array==value)
          ?????? return array;
          ?? }
          ?? */
          ?? return 0;
          ?}
          ?template <typename elemType>
          ?elemType * find(const elemType *first,const elemType *last,const elemType &value)
          ?{
          ?? if(!fist||!last)
          ??? return 0;
          ?? for(;first!=last;first++)
          ??? if(*first==value)
          ??? return first;
          ?? return 0;
          ?}
          ?由于vector 和array 相同,
          array[2] equals *(array+2) 2 指兩個(gè)elemType 單位
          ?由于vector 和array 相同,都是以一塊賴寧許內(nèi)存存儲(chǔ)所有元素,所以我們可以使用和array 一樣的處理處理
          ?方式
          ?vector<string> svec
          ?find(&vec[],&svec[vec.size()].serch_value);
          3 了解Iterator
          ? 1 template<typename elemType>
          ? void display(const vector<elemType>&vec,ostream &os)
          ? {
          ???? vector<elemType>::const_iterator iter=vec.begin();
          ???? vector<elemType>::const_iterator end_it=vec.end();
          ???? for(;iter !=end_it;++iter)
          ???? {
          ?????? os<<"ite3r"<<endl;
          ???? }
          ? }
          ?? 2 find
          ?? template<typename IteratorTypes,typename elemType>
          ?? IteratorType
          ?? find(IteratorType first,IteratorType last,count elemType &values)
          ?? {
          ????? for(;first!=last;++first)
          ?????? if(value==*first)
          ???????? return first;
          ?? }
          ??????? return last;
          ?? const int siz3=9;
          ?? int ia[size]={1,2,3,4,5,6,7,8,9};
          ?? vector<int> vec=(ia,ia+size);
          ?? list<int> list=(ia,ia+size);
          ??
          ?? int *pia=find(ia,ia+size,3);
          ?? if(pia!=ia+size)
          ???? //find...;

          ?? vector<int>::iterator it;
          ?? it=find(vec.begin(),vec.end,1024);
          ?? if(it!=vec.end())
          ??? //find...

          ?? list<int>::iterator it;
          ?? it=find(list.first().list.end,4);
          4 所有容器的共同操作
          ?equality(==),assignment(=),empty(),size(),clear()
          ?begin() 返回一個(gè)iterator,只向容器的第一個(gè)元素
          ?end()?? 返回一個(gè)iterator,只向容器的最后?一個(gè)元素
          5 使用序列容器
          ?1 vector 和list 是兩個(gè)最主要的序列式容器 vector 式一塊連續(xù)的內(nèi)存。取數(shù)據(jù)效率較高,但是存數(shù)據(jù)
          ?但是如果在任意位置插入或刪除數(shù)據(jù),效率就比較低。(但是在最后一位添加和刪除數(shù)據(jù)效率都比較高)
          ?2 list 系以雙向連接來存儲(chǔ)內(nèi)存,可以任意執(zhí)行前進(jìn)或后退操作,可以在任意位置安插或刪除數(shù)據(jù)。
          ?3 deque 以連續(xù)的內(nèi)存存儲(chǔ)元素,但是deque 在最前端元素的安插和刪除操作更有效,末端相同
          ?4 #include<vector>
          ?? #include<list>
          ?? #include<deque>
          ?5 產(chǎn)生空的容器
          ?? list<string> slist;
          ?? vector<int> ivec;
          ?6 產(chǎn)生特定大小的容器,每個(gè)元素都以千默認(rèn)的值作為初值
          ?? list<int> ilist(1024);
          ?? vector<string> svec(32);
          ?7產(chǎn)生特定大小的容器,并為每個(gè)軟速制定初值
          ? vector<int> ivec(10,-1)
          ? list<string> slist(16,'unassigned');
          ?8 int ia[9]={1,2,3,4,5,6,7,8,9};
          ?? vector<int> fib(ia,ia+8);
          ?9 根據(jù)某個(gè)容器產(chǎn)生新容器,復(fù)制軟來容器的元素,作為新容器的初值
          ? list<string> slist;
          ? list<string> slist2<slist>
          ?10 push_back(),pob_back() 在容器末尾進(jìn)行安插和刪除操作。在deque和list可以用push_front
          ? 和pop_front 在最前面天加和刪除操作。
          ?11 fornt() 和back()可以取回最前和最后的值?
          ?12 iterator insert(iterator position,elemType value)將value 安插于position 之前,返回一個(gè)iterator
          ?指向被安插的元素
          ? list<int>ilist;
          ? list<int>:: it=ilist.begin();
          ? while(it!=ilist.end())
          ?? if(*it>=ival)
          ?? {
          ????? ilist.inert(it,ival);
          ????? break;
          ?? }
          ? if(it==ilist.end())
          ??? ilist.pushi_back(ival);?

          posted on 2006-08-21 21:40 康文 閱讀(492) 評(píng)論(0)  編輯  收藏 所屬分類: c\c++

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 定襄县| 安吉县| 朝阳市| 扎鲁特旗| 九江市| 漾濞| 松江区| 红安县| 韶山市| 佛坪县| 日土县| 仙桃市| 方城县| 南陵县| 班玛县| 榆中县| 偃师市| 阿拉善盟| 丹凤县| 蛟河市| 宝鸡市| 阿拉善右旗| 邳州市| 兴业县| 大同县| 安义县| 屏山县| 天气| 衢州市| 明光市| 永州市| 沐川县| 布拖县| 县级市| 蓝田县| 蓬安县| 城口县| 广昌县| 芜湖市| 三河市| 红河县|