程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> vector 與 set區別,vectorset區別

vector 與 set區別,vectorset區別

編輯:C++入門知識

vector 與 set區別,vectorset區別


  注:本文內容摘自網絡,准確性有待驗證,現階段僅供學習參考。尊重作品作者成果,原文鏈接 :http://blog.csdn.net/wxdcxp/article/details/5279618

 

首先,vector是序列式容器而set是關聯式容器。set包含0個或多個不重復不排序的元素,也就是說set能夠保證它裡面所有的元素都是不重復的。另外對set容器進行插入時可以指定插入位置或者不指定插入位置。如insert(v.begin(),1),也可以直接用insert(1)。還有一點是set對一些操作符沒有進行重載,如<

 

下面是舉個例子:

vector插入及遍歷:

#include <iostream>
#include <list>
#include <vector>
#include <deque>
#include <set>
using namespace std;
int main(void)
{
    vector<int> v;
    v.insert(v.begin(),1);  //如果使用insert(1)不指定插入位置,會出錯
    v.insert(v.begin(),2);
    v.insert(v.begin(),1);
    v.insert(v.begin(),3);
    vector<int>::iterator vp = v.begin();
    for(vp = v.begin();vp < v.end(); vp++)
        cout << *vp << endl;
    return 0;
} 

運行程序輸出的結果是:
3
1
2
1

 

set插入及遍歷:

#include <iostream>
#include <list>
#include <vector>
#include <deque>
#include <set>
using namespace std;
int main(void)
{
    set<int> v;
    v.insert(v.begin(),1);
    v.insert(v.begin(),2);
    v.insert(v.begin(),1);
    v.insert(v.begin(),3);
    set<int>::iterator vp = v.begin();
    //for(vp = v.begin();vp < v.end(); vp++)  //如果使用這句會出錯,因為set容器對<沒有重載
    while(vp!=v.end())
        cout << *vp++ << endl;
    return 0;
}

運行後結果是:
1
2
3
也就是說,set容器對有重復的元素只取其中的一個。

對於STL裡vector,list,deque,set之間的差別,

vector實現了數組的功能,可以隨機儲存,但是元素插入效率不高,因為要移動元素
list實現了鏈表的功能,不支持隨機儲存,元素insert操作比較高效,取元素操作比較低效
deque實現了雙端隊列的功能,兩端插入,刪除功能比較高效
set和上面的都不一樣,是復合容器
 

Java中,ArrayList 與Vector的不同,HastSet 與HastTable 與HastMap 的不同,List與Set的不同

1,ArrayList 是新類,推薦使用,與Vector是舊類,不推薦使用;

2,HashSet 與HashTable 與HashMap 習慣用HashMap,因為習慣使用

HashMap的泛型,性能會更優;
3,List和Set都是接口。他們各自有自己的實現類,
有無順序的實現類,也有有順序的實現類。
最大的不同就是List是可以重復的。而Set是不能重復的。
List適合經常追加數據,插入,刪除數據。但隨即取數效率比較低。
Set適合經常地隨即儲存,插入,刪除。但是在遍歷時效率比較低。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved