简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
文章来源:https://www.toymoban.com/news/detail-657589.html
1.前言
本篇目的:map成员函数emplace与pair用法区别。文章来源地址https://www.toymoban.com/news/detail-657589.html
2. std::map容器的emplace函数和pair类型使用区别
-
emplace
函数是std::map
容器特有的成员函数,用于在容器中插入新的键值对。它接受键和值的构造函数参数,并直接构造键值对对象,避免了临时的pair
对象的创建,从而提高了性能。 -
pair
是一个模板结构体,定义了两个成员变量first
和second
,分别表示键和值。可以使用std::make_pair
函数或直接使用花括号初始化来创建pair
对象,并将其插入到std::map
容器中。
3.应用实例
<1>.容器map的成员函数使用emplace函数插入键值对
#include <iostream>
#include <map>
int main() {
// 使用emplace函数插入键值对
std::map<int, std::string> myMap;
myMap.emplace(std::make_pair(1, "Apple"));
myMap.emplace(std::make_pair(2, "Banana"));
// 遍历第一个map容器
for (const auto& pair : myMap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
return 0;
}
<2>.使用pair对象插入键值对
#include <iostream>
#include <map>
#include <utility>
int main() {
// 创建一个std::map<std::pair<int, int>>,键是std::pair,值是int
std::map<std::pair<int, int>, int> keyValueMap;
// 向map中插入键值对
keyValueMap.insert(std::make_pair(std::make_pair(1, 2), 100));
keyValueMap.insert(std::make_pair(std::make_pair(3, 4), 200));
keyValueMap.insert(std::make_pair(std::make_pair(5, 6), 300));
// 遍历map并输出键值对
for (const auto& kv : keyValueMap) {
std::cout << "Key: (" << kv.first.first << ", " << kv.first.second << ")";
std::cout << " Value: " << kv.second << std::endl;
}
return 0;
}
<3>.遍历map中的key-value
int main() {
std::map<string, string> mComponents;
auto emplace = [&](const char *libPath) {
mComponents.emplace(libPath, libPath);
};
// 添加元素到 map
emplace("libcodec2_soft_aacdec.so");
emplace("libcodec2_soft_aacenc.so");
emplace("libcodec2_soft_amrnbdec.so");
emplace("libcodec2_soft_amrnbenc.so");
emplace("libcodec2_soft_amrwbdec.so");
emplace("libcodec2_soft_amrwbenc.so");
//emplace插入key value值.
mComponents.emplace("Tom", "12");
mComponents.emplace("Jim", "18");
mComponents.emplace("Lim", "13");
mComponents.emplace("Aim", "14");
mComponents.emplace("Bim", "15");
//1.使用auto关键字遍历
for (const auto& kv : mComponents) {
cout << "Key: " << kv.first << ", Value: " << kv.second << endl;
}
//2.使用iterator遍历
std::map<std::string, std::string>::iterator it;
for (it = mComponents.begin(); it != mComponents.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
到了这里,关于C++之map的emplace与pair插入键值对用例(一百七十四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!