set和map

在 C++ 中,setmap 是两个常用的容器,它们分别在 <set><map> 头文件中定义

一、set

set 是一个集合,它可以存储唯一的元素(不重复),且自动排序(默认是升序)

插入、查找和删除的时间复杂度平均为 O(log n)

set<int> mySet;

    // 插入元素
    mySet.insert(5);
    mySet.insert(3);
    mySet.insert(8);
    mySet.insert(5); // 重复的元素不会插入

    // 遍历 set
    for (const auto& elem : mySet) {
       cout << elem << " "; // 输出: 3 5 8(自动升序排列)
    }
    cout << std::endl;

    // 查找元素
    if (mySet.find(3) != mySet.end()) {
        cout << "Found 3!" << std::endl;
    }

    // 删除元素
    mySet.erase(3);

    // 检查删除后的结果
    if (mySet.find(3) == mySet.end()) {
        cout << "3 has been removed." << std::endl;
    }

二、map

map 是一个关联数组,它存储键值对(key-value pairs),

且每个键都是唯一的(不重复),键会自动排序(默认是升序)

查找、插入和删除的时间复杂度平均为 O(log n)

//定义map
		map<int, string> mapStudent;

		//插入元素
		mapStudent.insert(pair<int, string>(1, "Da Ming")); //insert插入pair<int,string>,要写类型
		mapStudent[3] = "Lingling"; //用数组的方式插入
		mapStudent[2] = "Amy";
		//map元素不能重复,若已有了该key再插入该key,用insert会插入失败,用"array"会实行覆盖操作

		//遍历map
		for (const auto& pair : mapStudent) {
			cout << pair.first << ' ' << pair.second << endl;
		}

		//查找元素
		auto iter = mapStudent.find(1); //查找key值,返回表示对应元素位置的迭代器,找不到则返回.end()
		if (iter == mapStudent.end()) {
			cout << "Can not find" << endl;
		}
		else {
			cout << iter->second << endl; //iter->second表示value值
		}

		//删除元素
		mapStudent.erase(1); //用key值查找删除
		auto it = mapStudent.find(1);
		mapStudent.erase(it); //用iter删除
		mapStudent.erase(mapStudent.begin(), mapStudent.end()); //清空整个map

iter迭代器是类似指针,但相比指针有更高级的抽象,所以用iter->second;

pair是对元素的引用,所以用pair.second

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值