C++ STL入门教程(6) set(集合)的使用方法

一、简介

集合(Set)是一种包含已排序对象的关联容器,不允许有重复元素。

二、完整程序代码

/*请务必运行以下程序后对照阅读*/ 

#include <set>
#include <iostream>
using namespace std; 

int main()
{
  ///1. 初始化
  set<int> num;
  set<int>::iterator iter;
  cout << num.max_size() << endl;///set容纳上限
  cout << endl; 

  ///2. 添加元素
  for (int i = 0; i < 10; i++)
    num.insert(i);
  cout << num.size() << endl;
  cout << endl; 

  ///3. 遍历
  ///不同于map,set容器不提供下标操作符
  for (iter = num.begin(); iter != num.end(); iter++)
    cout << *iter << " " ;
  cout << endl;
  cout << endl; 

  ///4. 查询
  iter = num.find(1);
  if (iter != num.end())
    cout << *iter << endl;
  else
    cout << -1 << endl;
  iter = num.find(99);
  if (iter != num.end())
    cout << *iter << endl;
  else
    cout << -1 << endl;
  cout << endl; 

  ///5. 删除
  iter = num.find(1);
  num.erase(iter);
  cout << num.size() << endl;
  for (iter = num.begin(); iter != num.end(); iter++)
    cout << *iter << " " ;
  cout << endl;
  cout << endl; 

  ///6. 判空与清空
  if (!num.empty())
    num.clear();
}

三、补充

map容器是键-值对的集合,好比以人名为键的地址和电话号码。相反地,set容器只是单纯的键的集合。当我们想知道某位用户是否存在时,使用set容器是最合适的。

参考网址:http://www.cplusplus.com/reference/set/set/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++ STL list 遍历删除出错解决方案

    C++ STL list 遍历删除崩溃 错误用法一 下面这种用法会在for的地方崩溃,分析 第一次for循环的时候 it=0,当t.erase(it)执行完成之后 it就变成了 -17891602 表明it不能再作为迭代器进行运算,自然会报错. #include <map> #include <list> using namespace std; typedef std::list<int > TESTLIST; int _tmain(int argc, _TCHAR*

  • C++ STL入门教程(1) vector向量容器使用方法

    一.简介 Vectors 包含着一系列连续存储的元素,其行为和数组类似. 访问Vector中的任意元素或从末尾添加元素都可以在O(1)内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是O(N). 二.完整程序代码 /*请务必运行以下程序后对照阅读*/ #include <vector> #include <iostream> #include <algorithm> #include <stdexcept> using namespace

  • C++ STL入门教程(2) list双向链表使用方法(附程序代码)

    一.简介 "Unlike other standard sequence containers, list and forward_list objects are specifically designed to be efficient inserting and removing elements in any position, even in the middle of the sequence." Lists将元素按顺序储存在链表中.与向量(vector)相比, 它允许快速

  • C++ STL入门教程(3) deque双向队列使用方法

    一.简介 deque(Double Ended Queues,双向队列)和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). 二.完整程序代码 /*请务必运行以下程序后对照阅读*/ #include <deque> #include <iostream> #include <algorithm> #include <stdexcept> using namespace std; void print(int num) { cout <&

  • zlib库压缩和解压字符串STL string的实例详解

    zlib库压缩和解压字符串STL string的实例详解 场景 1.一般在使用文本json传输数据, 数据量特别大时,传输的过程就特别耗时, 因为带宽或者socket的缓存是有限制的, 数据量越大, 传输时间就越长. 网站一般使用gzip来压缩成二进制. 说明 1.zlib库可以实现gzip和zip方式的压缩, 这里只介绍zip方式的二进制压缩, 压缩比还是比较可观的, 一般写客户端程序已足够. 2.修改了一下zpipe.c的实现, 其实就是把读文件改为读字符串, 写文件改为写字符串即可. 例子

  • C++中 STL list详解及简单实例

    C++中 STL list详解 1.List: 内部实现是一个双向链表,可以高效的进行插入删除,但不能够进行随机访问 2..示例程序: #include "stdafx.h" #include <iostream> #include <list> #include <iterator> #include <algorithm> using namespace std; const int num[5] = {1,3,2,4,5}; boo

  • C++ STL入门教程(7) multimap、multiset的使用

    一.multimap(一对多索引) C++ multimap和map所支持的操作相同(除了multimap不支持下标运算),但是multimap允许重复的元素. 完整程序代码: /*请务必运行以下程序后对照阅读*/ ///头文件依旧是map #include <map> #include <string> #include <iostream> using namespace std; int main() { ///1. 初始化 multimap<int, st

  • C++ STL入门教程(6) set(集合)的使用方法

    一.简介 集合(Set)是一种包含已排序对象的关联容器,不允许有重复元素. 二.完整程序代码 /*请务必运行以下程序后对照阅读*/ #include <set> #include <iostream> using namespace std; int main() { ///1. 初始化 set<int> num; set<int>::iterator iter; cout << num.max_size() << endl;///s

  • R语言入门教程之删除指定数据的方法

    引言 在R学习中经常用到的是按着某种逻辑值提取数据集.本文来讲一下利用索引的手法删除数据集合. 数据准备 > Data 英雄 职业 熟练等级 使用频次 胜率 1 后裔 射手 5 856 0.64 2 孙尚香 射手 5 211 0.10 3 狄仁杰 射手 5 324 0.20 4 李元芳 射手 4 75 0.30 5 安琪拉 法师 5 2324 0.40 6 张良 法师 4 755 0.50 7 不知火舞 法师 4 644 0.60 8 貂蝉 法师 3 982 0.70 9 <NA> &l

  • SpringBoot 入门教程之引入数据传输层的方法

    我们现在操作的数据直接就使用了实体类,假如我们输出的用户对象需要包含用户拥有的权限列表,那么我们怎么封装呢? 直接封装进实体类中显然不行,因为实体类的职责就是提供与数据库表字段一一对应的映射关系,所以我们还需要封装出一层数据传输层 DTO(Data Transfer Object),通过它暴露给外部,这样我们就能高度定制化我们需要输出的数据而不会影响到实体类. 在项目中创建 dto 目录,新建 UserDto.java 文件: package com.foxescap.wxbox.dto; im

  • nodejs入门教程三:调用内部和外部方法示例

    本文实例讲述了nodejs入门教程之调用内部和外部方法.分享给大家供大家参考,具体如下: 1.创建fun.js var fun3 = require('./fun3'); var fun2 = require('./fun2'); function fun1(){ console.log("我是fun1"); //exports的方式:exports 是给 module.exports 添加属性和方法 //fun2.obj.add(1,2); //fun3.print(); //mod

  • C#入门教程之集合ArrayList用法详解

    本文实例讲述了C#入门教程之集合ArrayList用法.分享给大家供大家参考,具体如下: .NET Framework提供了用于数据存储和检索的专用类,这些类统称集合.这些类提供对堆栈.队列.列表和哈希表的支持.大多数集合类实现系统的接口.下面我们主要来讲一下ArrayList. ArrayList是命名空间Systrm.Collections下的一部分,它是使用大小可按需动态增加的数组实现IList接口. ArrayList的容量是ArrayList可以保存的元素数.ArrayList的默认初

  • 零基础易语言入门教程(五)之逻辑型数据类型

    在上篇文章给大家介绍了零基础易语言入门教程(四)之数据类型,上篇针对数值到文本类型知识,今天给大家介绍下逻辑型数据. 具体方法和步骤如下所示: 1.逻辑型数据非真即假: 首先申请一个局部变量(A)类型为:逻辑型,编写代码为:A=1>2,那么输出的结果应为假,因等于1是赋值与1,然后代码中写道1大于2,所以这是假的,见下图所示: 2.关系运算符: 在上图大家需注意的是,A后面的等于号是赋值符号,而后面的≥,≠,<一些符号则是关系运算符. 关系运算符不是非要设置变量给其赋值才可以使用的,同样他可以

随机推荐