C++之路起航——标准模板库(set)

set(集合):http://baike.baidu.com/link?url=cb68AB-3qfEK8RoaGHJFClb4ZiWpJfc32lPOLtaNUrdxntFC738zCZsCiUlfAVRLds2aeNkgYCYCe_wdVB2TIa

需要包括头文件<set>;

定义:

set<数据类型> 变量名;

Eg:

set<int> s;//定义了一个整型的集合s;

基本操作(红色标识为常用操作):

s.begin() 返回指向第一个元素的迭代器

s.clear() 清除所有元素

s. count() 返回某个值元素的个数

s.empty() 如果集合为空,返回true

s.end() 返回指向最后一个元素的迭代器

s.equal_range() 返回集合中与给定值相等的上下限的两个迭代器

s.erase() 删除集合中的元素

s.find() 返回一个指向被查找到元素的迭代器//不太会用,据说为常用算法,下面代码解释中未提到该函数。

s.get_allocator() 返回集合的分配器

s.insert() 在集合中插入元素

s.lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器

s.key_comp() 返回一个用于元素间值比较的函数

s.max_size() 返回集合能容纳的元素的最大限值

s.rbegin() 返回指向集合中最后一个元素的反向迭代器

s.rend() 返回指向集合中第一个元素的反向迭代器

s.size() 集合中元素的数目

swap() 交换两个集合变量

s.upper_bound() 返回大于某个值元素的迭代器

s.value_comp() 返回一个用于比较元素间的值的函数

代码解释(为服务广大初学者,以后代码解释加汉语提示操作,不懂粘代码自己运行):

#include<set>
#include<cstdio>
#include<string>
#include<iostream>

using namespace std;

int main()
{
set<string> strset;//定义了一个为字符串型的集合strset;
strset.insert("a");//添加元素a;
strset.insert("b");//添加元素b;
strset.insert("c");//添加元素c;
strset.insert("d");//添加元素d;
strset.insert("a");//再添加元素a;
cout<<"集合基本操作:"<<endl;
cout<<"集合是否为空:";
if (strset.empty()) printf("YES\n");
else printf("NO\n");
set<string>::iterator ator=strset.begin();
cout<<"集合遍历:"<<endl;
for(;ator!=strset.end();ator++)
cout<<*ator<<endl;
cout<<"集合中a的个数:" ;
cout<<strset.count("a")<<endl;
cout<<"集合中z的个数:" ;
cout<<strset.count("z")<<endl;
string a;
cout<<"集合判重操作:"<<endl;
cin>>a;
if (strset.count(a)==1) printf("chong\n");//判断元素是否重。
else printf("buchong\n");
cout<<"集合去重操作:"<<endl;
cin>>a;
if (strset.count(a)==1) strset.erase(a);//将重元素去除。
ator=strset.begin();
cout<<"集合遍历:"<<endl;
for(;ator!=strset.end();ator++)
cout<<*ator<<endl;
cout<<"集合中元素个数:" ;
cout<<strset.size()<<endl;
cout<<"集合清0操作:"<<endl;
strset.clear();//清0;
cout<<"集合是否为空:";
if (strset.empty()/*判空*/) printf("YES\n");
else printf("NO\n");
return 0;
}

时间: 2024-10-11 06:39:31

C++之路起航——标准模板库(set)的相关文章

C++之路起航——标准模板库(vector)

vector(动态数组或向量):动态分配内存空间的线性储存结构. 需要包括头文件<vector> 定义: vector<数据类型> 变量名: Eg: vector<int> s; //定义了一个数据类型为整形的动态数组; 基本操作(红色标识为常用操作): s[i]直接以下标方式访问容器中的元素.       s.front()  返回首元素. s.back()  返回尾元素.   s.push_back(x)向表尾插入元素x. s.size()  返回表长.  s.em

C++之路起航——标准模板库(queue)

queue: FIFO队列:先进先出队列. 优先队列:对队列中的元素按优先级的大小输出. 定义: FIFO队列: queue<数据类性>变量名. 优先队列:priority_queue<数据类型>变量名. Eg: FIFO队列: queue<int>que//定义了一个名为que的整型的先进先出队列. 优先队列:priority_queue<int>que//定义了一个名为que的整型的优先队列. //当类型为自定义结构时,需要重载运算符. Eg: stru

C++模板引出的标准模板库-----&gt;初涉

C++中模板,是相当重要的一部分,前面提到过一些基础,关于模板中需要注意的问题,会在最近整理出来,今天想说的,是由模板引出的标准模板库. 当初经常会被推荐看<STL源码剖析>这本书,听说很厉害,是C++高手都需要走过的路,可一直都不知道STL是什么,也一直忘记去查,今天整理出来的一些东西,最起码可以让未了解过这方面的童鞋认识一下. C++标准模板库,即STL:Standard Template Lib,STL的产生,是必然的.在长期的编码过程中,一些程序员发现,有一些代码经常用到,而且需求特别

标准模板库

-------------------siwuxie095 在长期的编码中,聪明的程序员们发现:有一些代码经常碰到, 而且需求特别稳定,于是,各大公司在出售自己的 IDE 环境时, 就会把这些模板代码打包,一起销售 慢慢地,这些大公司之间就达成了某种共识,觉得应该把这些 涉及模板的通用代码进一步的统一和规范,于是,大家慢慢形 成了一套 C++ 的标准模板,就是现在所看到的标准模板库 标准模板库 标准模板库,即 Standard Template Lib,简称为 STL 标准模板库所涉及的内容非常

C++标准库和标准模板库

C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢: (2)质量:标准库的都是经过严格测试的,正确性有保证: (3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平: (4)良好的编程风格:采用行业中普遍的做法进行开发. 一.C++标准库 C++标准库的内容分为10类, 分别是:C1.语

STL学习一:标准模板库理论基础

STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝 地连接.几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会.在C++标准中,STL被组织为下面的13个头文

C++ Primer 学习笔记_14_标准模板库_bitset位集合容器

C++ Primer 学习笔记_14_标准模板库_bitset位集合容器 bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,因而很节省内存空间.下图是一个bitset的存储示意图,它的10个元素只使用了两个字节的空间. 使用bitset需要声明头文件"#include <bitset>" 1.创建bitset对象 创建bitset对象时,必须要指定容器的大小.bitset对象的大小一经定义,就不能修改了.下面这条语句就定义了bitset对

C++ Primer 学习笔记_23_标准模板库_stack.

C++ Primer 学习笔记_11_标准模板库_stack.queue队列容器与priority_queue优先队列容器 1.stack堆栈 stack堆栈是一个后进先出(Last In First Out,LIFO)的线性表,插入和删除元素都只能在表的一端进行.插入元素的一端称为栈顶,而另一端称为栈底.插入元素叫入栈(Push),删除元素叫出栈(Pop).下图是堆栈示意图 堆栈只提供入栈,出栈,栈顶元素访问和判断是否为空等几种方法.采用push()方法将元素入栈:采用pop()方法出栈:采用

C++ Primer Plus 第六版 第16章 string类和标准模板库

1.string实际上是模板具体化basic_string<char> 的一个typedef,有默认参数,所以省略了初始化参数 2.size_type是一个依赖于实现的整形 string将string::npos定义为字符串的最大长度 3.string类的构造函数P656 4.对于c-风格字符串,3种输入方法:cin>>   cin.getline(),cin.get 对于string   ,2种输入方法:cin>>,getline(cin,string对象) 5.st