empalce系列函数通过直接构造对象的方式避免内存拷贝和移动; 无序容器在插入元素时不排序,提升了插入效率,但是如果关键字是自定义的需要提供hash函数和比较函数
struct A
{
int x;
double y;
A(int a,double b):x(a),y(b){}
};
int main()
{
std::vector<A> v;
v.emplace_back(1,2);
std::cout<<v.size()<<std::endl;
return 0;
}
复制
struct A
{
int x;
double y;
std::string z;
A(int a,double b,std::string c):x(a),y(b),z(c) {
std::cout<<"is constructed"<<std::endl;
}
A(const A &otherA):x(otherA.x),y(otherA.y),z(std::move(otherA.z)){
std::cout<<"is moved"<<std::endl;
}
};
int main()
{
std::vector<A> v;
std::cout<<"------emplace_back:---------"<<std::endl;
v.emplace_back(1,2,"helloword");
std::cout<<"------push_back:---------"<<std::endl;
v.push_back(A(3,4,"china"));
return 0;
}
复制
运行结果如下:
------emplace_back:---------
is constructed
------push_back:---------
is constructed
is moved
is moved
复制
2 无序容器
struct Key
{
std::string first;
std::string second;
};
struct KeyHash{
std::size_t operator() (const Key &k) const{
return std::hash<std::string>() (k.first)^
(std::hash<std::string>() (k.second) << 1);
}
};
struct KeyEqual{
bool operator()(const Key &lhs,const Key &rhs) const {
return lhs.first==rhs.first && lhs.second == rhs.second ;
}
};
int main()
{
//定义一个空的无序map
std::unordered_map<std::string,std::string> mymap1;
//初始化
std::unordered_map<std::string,double> mymap2 = {
{"mom",5.4},
{"dad",6.1},
{"bro",5.9} };
//拷贝构造
std::unordered_map<std::string,double> mymap3 = mymap2;
//移动构造
std::unordered_map<std::string,double> mymap4 = std::move(mymap2);
//区间构造
std::vector<std::pair<std::string,double> > v = {
{"cpp",1},
{"java",2}
};
std::unordered_map<std::string,double> mymap5(v.begin(),v.end());
std::unordered_map<std::string,double> mymap7(mymap2.begin(),mymap2.end());
//自定义无序容器
std::unordered_map< Key,std::string,KeyHash,KeyEqual> mymap6={
{ {"cpp","top"},"one"},
{ {"java","top"},"two"}
};
return 0;
}
复制
从上面的代码可以看出,无序容器的用法和有序容器在使用上基本没有什么区别。
- EOF -
文章转载自CPP开发前沿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1275次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
751次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
618次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
523次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
485次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
475次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
364次阅读
2025-04-18 10:01:22
给准备学习国产数据库的朋友几点建议
白鳝的洞穴
337次阅读
2025-05-07 10:06:14
XCOPS广州站:从开源自研之争到AI驱动的下一代数据库架构探索
韩锋频道
299次阅读
2025-04-29 10:35:54
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
282次阅读
2025-04-23 12:04:21