C++ std::map insert() 函数返回值详解及示例
在 C++ 中,无论是 Linux 还是其他操作系统,std::map 的 insert() 函数都返回一个 std::pair 对象,其中第一个元素是一个迭代器,指向新插入的元素(或者如果元素已经存在,则指向现有元素),第二个元素是一个布尔值,指示插入操作是否成功。
具体来说,如果插入操作成功,即没有相同的键值对存在,那么返回的 std::pair 对象的第二个元素为 true,否则为 false。而第一个元素是一个迭代器,可以用来访问和操作刚刚插入的元素。
下面是一个示例代码,展示了如何使用 insert() 函数并获取返回值:
#include <iostream>
#include <map>
int main()
{
std::map<int, std::string> myMap;
// 使用 insert() 函数插入一个键值对
auto result = myMap.insert(std::make_pair(1, 'One'));
if (result.second)
{
std::cout << 'Insertion successful!' << std::endl;
}
else
{
std::cout << 'Key already exists!' << std::endl;
}
// 访问刚刚插入的元素
std::cout << 'Inserted element: ' << result.first->second << std::endl;
return 0;
}
输出结果为:
Insertion successful!
Inserted element: One
注意,如果你使用的是 C++17 或更高版本的编译器,你还可以使用结构化绑定(structured binding)来更方便地获取返回值,而不需要使用 auto 关键字:
// 使用结构化绑定获取返回值
auto [iter, success] = myMap.insert(std::make_pair(1, 'One'));
if (success)
{
std::cout << 'Insertion successful!' << std::endl;
}
else
{
std::cout << 'Key already exists!' << std::endl;
}
std::cout << 'Inserted element: ' << iter->second << std::endl;
这样,iter 就是指向刚刚插入的元素的迭代器,success 是一个布尔值,指示插入操作是否成功。
原文地址: https://www.cveoy.top/t/topic/p8gn 著作权归作者所有。请勿转载和采集!