C++常用容器、函数、类集(9)

接前一篇文章:C++常用容器、函数、类集(8)

 

C++常用容器、函数、类集(1)-优快云博客中讲了std::map及其一般用法。

std::map是C++标准模板库(STL)中的关联容器,基于红黑树实现,存储键值对且按键自动排序,提供O(log n)时间复杂度的查找、插入和删除操作‌。

#include <iostream>
using namespace std;
#include <map>
#include <string>
 
int main() {
    map<int, string> students = { {1, "Alice"}, {2, "Bob"}, {3, "Charlie"} };
 
    if (students.find(2) != students.end()) {
        cout << "找到 ID 2: " << students[2] << endl;
    }
    else {
        cout << "ID 2 不存在" << endl;
    }
        
    system("pause");

    return 0;
}

本回来看一个常用的但较为特殊的用法:second。

前边已讲过,std::map是一个关联容器,存储的元素是键值对(key-value pair)。其中每个键(key)都映射到一个值(value)。如果要访问或修改一个std::map中某个键对应的值,可以使用second成员。second成员是一个指向存储在std::map中值的迭代器,它返回一个引用,可以通过此引用来读取或修改相应的值。

下边是一个简单的代码示例,演示如何使用std::map和second:

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> my_map;

    //添加一些键值对到map中
    my_map["apple"] = 1;
    my_map["banana"] = 2;
    my_map["orange"] = 3;
    my_map["pear"] = 4;

    //访问并打印一个键对应的值
    std::cout << "苹果的数量:" << my_map["apple"] << std::endl;
    std::cout << "香蕉的数量:" << my_map["banana"] << std::endl;

    //修改一个键对应的值
    my_map["banana"] = 5;

    //遍历map并打印所有键值对
    for (const auto& pair: my_map) {
        std::cout << "键:"<<pair.first << ",值:" << pair.second << std::endl;
    }

    return 0;
}

在这段示例代码中:

1)首先创建了一个名为my_map的std::map,其中键(key)是字符串类型,代表的是水果的名称;值(value)是整数类型,代表的是对应类的水果的数量;

2)然后,使用[]运算符将一些键值对添加到my_map中;

3)之后,使用second成员来访问和修改键对应的值;

4)最后,使用for循环遍历整个my_app,并打印所有的键值对。

为什么能用secode和first访问键值对?别忘了前文书也讲过的std::pair。

std::pair是C++标准模板库(STL)提供的一个容器,它能够存储两个不同类型的数据作为一个整体,其中first访问pair的第一个元素。second访问pair的第二个元素。

代码示例如下:

#include <iostream>
using namespace std;
#include <utility>
#include <string>
 
int main()
{
    pair<string, int> p;
 
    //通过构造函数参数列表初始化
    p = make_pair("张三", 18);
    cout << p.first << p.second << endl;//打印结果 张三18
    // 初始化的时候赋值
    pair<string, int> pname("张三", 18);
    cout << pname.first << pname.second << endl;//打印结果 张三18
 
    return 0;
}

而std::map中存储的是键值对(key-value pair),从名字上就能看出来,键值对也是对(pair),因此能够使用first(访问键)和second(访问值)。

总结一下:

在C++的STL中,std::map是一种关联容器,它允许你通过键值对来存储和检索元素。每个键值对由一个键(key)和一个值(value)组成。为了访问std::map中元素的first成员(即键部分)和second成员(即值部分),需要先获取到对应的键值对,然后再访问其second成员。

std::map内部使用红黑树来维护键值对的排序,每个元素都是一个键值对,可以表示为std::pair<const Key, T>,其中Key是键的类型,T是值的类型。

 

更多内容请看下回。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值