您的位置 首页 java

Java程序员自学c++资料番外篇-字典和容器

Java 编程工作中,经常对数据储存是Arraylist和 hashMap ,他们保持长度可变,而且可以很好对保持其中数据遍历和排序。所以我就 c++ 中的对等的方法。

c++中的字典map和unordered_map:

#include <map>
#include <unordered_map>
#include <iostream>
int main(){
 std::map<std::string,int> m;
 m["s"]=0;
 m["a"]=1;
 m["d"]=2;
 m["c"]=3;
 m.insert({"f",4}); //第二种方式插入数据
 //采用普通方法遍历
 for (std::map<std::string,int>::iterator i=m.begin();i!=m.end();i++) {
 std::cout <<"key " << i->first <<" values "<< i->second <<std::endl;
 }
 std::cout<<"********************************"<<std::endl;
 //unordered_map
 std::unordered_map<std::string,int> *unorderedMap=new std::unordered_map<std::string,int>();
 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 <<"key " << i.first <<" values "<< i.second <<std::endl;
 }
 return 0;
}
 

运行结果:

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


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

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

 

运行结果:

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++资料番外篇-字典和容器

文章地址:https://www.zhihuclub.com/175469.shtml

关于作者: 智云科技

热门文章

网站地图