stl set 的 insert()

这篇具有很好参考价值的文章主要介绍了stl set 的 insert()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        set 跟 map 容器很像,但它俩又有很大的不同,它们的底层实现都是树,元素都是有序的,但map是可以修改元素的,而 set 就不行了,set 里的元素只有删除的情况,没有修改的情况;所以发现没有? set 是没有 operator[] 操作的。

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <set>


int main ()
{
	std::set<int> myset;
	std::set<int>::iterator it;
	std::pair<std::set<int>::iterator,bool> ret;

	// set some initial values:
	for (int i = 1; i <= 5; ++i) 
	{
		// set: 10 20 30 40 50
		myset.insert(i*10);
	}    

	ret = myset.insert(20);               // no new element inserted

	if (!ret.second) 
	{
		it = ret.first;  // "it" now points to element 20
		std::cout << "insert failed!\n" << *it << "\n";
	}

	myset.insert(it, 25);                 // max efficiency inserting
	myset.insert(it, 24);                 // max efficiency inserting
	myset.insert(it, 26);                 // no max efficiency inserting

	int myints[] = {5, 10, 15};              // 10 already in set, not inserted, 5 and 15 insert success
	myset.insert(myints, myints + 3);


	for (it = myset.begin(); it != myset.end(); ++it)
	{	
		std::cout << ' ' << *it;
	}
	std::cout << '\n';

	myset.erase(50);
	for (it = myset.begin(); it != myset.end(); ++it)
	{	
		std::cout << ' ' << *it;
	}
	std::cout << '\n';
	
	return 0;
}

因为 set 里的元素是有序的,所以跟 map 一样,如果元素是自定义类型的,必须实现 operator <文章来源地址https://www.toymoban.com/news/detail-852101.html

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <set>

struct objectKey
{
	int ldp_oidx;
	int lsp_oidx;
	bool operator<(const objectKey &key) const
	{
		return ldp_oidx > key.ldp_oidx;
	}
};

int main ()
{

	std::set<objectKey> objSet;
	std::set<objectKey>::iterator itKey;
	
	objectKey key = {0, 1};
	objectKey key2 = {1, 2};
	objectKey key3 = {2, 3};
	objSet.insert(key);
	objSet.insert(key2);
	objSet.insert(key3);
	
	for(itKey = objSet.begin(); itKey != objSet.end(); ++itKey)
	{
		printf("%d, %d\n", (*itKey).ldp_oidx, (*itKey).lsp_oidx);
	}
	
	
	return 0;
}

到了这里,关于stl set 的 insert()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ STL set容器使用教程

    set 为关联式容器,翻译为 集合 ,其中的元素类型为 pair ,需要注意 set 容器存储的各个键值对,要求键 key 和值 value 必须相等 基于 set 容器的这种特性,当使用 set 容器存储键值对时,只需要为其提供各键值对中的 value 值(也就是 key 的值)即可。 set 容器 会自行根据键的大

    2024年02月10日
    浏览(37)
  • 面试之快速学习STL-set

    和 map、multimap 容器不同,使用 set 容器存储的各个键值对,要求键 key 和值 value 必须相等 使用 set 容器存储的各个元素的值必须各不相同 从语法上讲 set 容器并 没有强制对存储元素的类型做 const 修饰, 即 set 容器中存储的元素的值是可以修改的。但是,C++ 标准为了防止用户修

    2024年02月12日
    浏览(31)
  • STL --- 二、容器 (4)set 和multiset

    目录 1、std::set 和 std::multiset 特点 2、std::set 和 std::multiset 常用的api 3、std::set 和 std::multiset 的示例 4、std::map和set区别 1、std::set 和 std::multiset 特点 (1)std::set 中每个元素的键值都唯一,而 std::multiset 中可以有多个相同的键值。 (2)std::set 中的元素按照键值大小顺序是按照元

    2024年02月06日
    浏览(41)
  • STL容器——unordered_set的用法

    unordered_set 容器,可直译为 无序 set 容器 。即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而 unordered_set 容器不会。 下面是 set 、 multiset 和 unordered_set 之间的差别。 注意这三种集合的底层实现,他决定了算法的时间复杂度。特别

    2024年02月09日
    浏览(48)
  • 【C++】STL之map、set类源码剖析

    目录 概述 算法 源码 Iterator.h RBTree.h Map.h Set.h test.cpp map和set都是STL中的关联式容器,而vector、list、deque是序列式容器。 map是映像,set是集合,map元素的数据类型是std::pairK,V格式(key/value形成映像),set元素的数据类型只有key值。 map和set的实现是对红黑树的封装,map根据key值进行

    2024年02月02日
    浏览(39)
  • 19 标准模板库STL之set和multiset

    基础知识         1、set是一个自动有序且不含重复元素的容器,内部使用红黑树的平衡二叉索引树的数据结构来实现。向set中插入新元素时,会自动调节二叉树的排列,将元素放到合适的位置。multiset与set不同的地方在于,set内相同数值的元素只能出现一次,multiset内相同

    2023年04月22日
    浏览(47)
  • 【C++ STL之map,set,pair详解】

    在C++的STL(Standard Template Library)中,map是一个非常有用的关联容器。它提供了一种键-值对的数据结构,其中的元素按照键的顺序进行排序,并且每个键是唯一的。本文将详细介绍C++ STL中map的使用方法和一些常见操作。 (1)头文件 (2)初始化方法 可以使用以下方式声明和

    2024年02月12日
    浏览(36)
  • STL之unordered_set 【无序不重复集合】

    unordered_set :无序集合,与 set 类似,但 不进行排序 ,提供更快的查找操作。 unordered_set是C++标准库中的一个容器,用于存储不重复的元素集合。它是哈希表的一种实现,因此能够提供快速的插入、查找和删除操作。它的特性如下: 有序性:unordered_set中的元素是无序的,也就

    2024年01月24日
    浏览(53)
  • 【C++入门到精通】C++入门 —— set & multiset (STL)

    前面我们讲了C语言的基础知识,也了解了一些初阶数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用 和 内联函数也认识了什么是类和对象以及怎么去new一个 ‘对象’ ,也了解了C++中的模版,以及学习了几个STL的结构也相信大家都

    2024年02月08日
    浏览(40)
  • 【C++】STL——set/multiset 和 map/multimap的使用

    在初阶阶段,我们已经接触过STL中的部分容器 比如:vector、list、deque、forward_list(C++11)等,这些容器统称为 序列式容器 ,因为其底层为线性序列的数据结构,里面存储的是元素本身。 而今天我们要学习的几个容器称为关联式容器,那什么是关联式容器?它与序列式容器有什

    2024年02月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包