Java程序員自學c++資料番外篇-字典和容器

java編程工作中,經常對數據儲存是Arraylist和HashMap,他們保持長度可變,而且可以很好對保持其中數據遍歷和排序。所以我就c++中的對等的方法。

c++中的字典map和unordered_map:

#include 
#include <unordered>
#include <iostream>
int main(){
std::map<:string> m;
m["s"]=0;
m["a"]=1;
m["d"]=2;
m["c"]=3;
m.insert({"f",4}); //第二種方式插入數據
//採用普通方法遍歷
for (std::map<:string>::iterator i=m.begin();i!=m.end();i++) {
std::cout <first <second <<:endl> }
std::cout< //unordered_map
std::unordered_map<:string> *unorderedMap=new std::unordered_map<:string>();
unorderedMap->insert({"s",0});
unorderedMap->insert({"a",1});
unorderedMap->insert({"d",2});
unorderedMap->insert({"c",3});
unorderedMap->insert({"f",4});
//採用第二種方法遍歷
for (auto& i:*unorderedMap){
std::cout < }
return 0;
}
/<iostream>/<unordered>

運行結果:

key a values 1
key c values 3
key d values 2

key f values 4
key s values 0
********************************
key f values 4
key c values 3
key d values 2
key s values 0
key a values 1

總結:

map和unordered_map 都是key,value的形勢保持數據,而且key都是唯一性,但是c++中的map和java中的treeMap一樣,自動對key進行排序,而unordered_map 更新java中的hashMap一樣,沒有對key進行有序儲存。

c++中 list,set ,vector

 //vector
std::vector<:string> *data=new std::vector<:string>();
data->push_back("1");
data->push_back("2");
data->push_back("4");
data->push_back("3");
for (auto& d:*data) {
std::cout < }
//list
std::list<:string> *list=new std::list<:string>();
list->push_back("1");
list->push_back("2");
list->push_back("4");
list->push_back("3");


for(std::list<:string>::iterator i=list->begin();i!=list->end();i++){
std::cout << "list " <front()<<:endl> }
/* for (auto& d:*list) {
std::cout << "list" < }*/

//set
std::set<:string> *set=new std::set<:string>();
set->insert("1");
set->insert("2");
set->insert("4");
set->insert("3");

for (auto& d:*set) {
std::cout < }

運行結果:

vector 1
vector 2
vector 3
list 1
list 2
list 3
list 4
set 1
set 2
set 3
set 4

總結:

vector和數組類似,擁有一段連續的內存空間,並且起始地址不變。set的特性是,所有元素都會根據元素的鍵值自動排序,不會像vector和list保持插入的順序。如果非要卻別vector和list的話:如果需要高效的隨機存取,而不在乎插入和刪除的效率,使用vector;如果需要大量的插入和刪除,而不關心隨機存取,則應使用list。

Java程序員自學c++資料番外篇-字典和容器


分享到:


相關文章: