set提供一个不重复元素的集合,一般不能直接修改元素。因为这样可能会造成重复元素
因此必须删除旧元素,再插入新元素。
看下面程序:分析每句的功能。
#include<set>
#include<iostream>
using namespace std;
int main()
{
 set<int> s;//1
 s.insert(9);
 s.insert(3);
 s.insert(5);
 s.insert(7);
 s.insert(1);
 set<int>::const_iterator iter;
 for(iter = s.begin(); iter != s.end(); iter++)
 {
  cout<<*iter<<endl;
  const_cast<int&>(*iter)= 1; //a
 }
 cout<<"after"<<endl;
 for(iter = s.begin(); iter != s.end(); iter++)
 {
   cout<<*iter<<endl;
 }
 cout<<"s.size()="<<s.size()<<endl;
 return 0;
}
第一句构造一个set,
第二句插入一个元素,
关键在于a处:修改元素为1
最后输出各个元素均为1,
这个提供一个反例。以证明不要直接修改set的元素值,否则将会出现重复元素。不过这可能是vc的实现,其他平台可能结果不同,程序在vc6.0下运行通过。
 
 

set容器只是单纯的键的集合,键必须为一。set容器不支持下标操作,而且没有定义maped_type类型。在set容器中,value_type不是pair类型,而是与key_type类型相同的类型。

1.在set中添加元素

set<string> set1;

set1.insert("the");

set1.insert("end");

也可以添加一对迭代器,如下:

set1.insert(set33.begin(),set33.end());

这个方法返回void

带有一个键参数的insert版本返回pair类型对象,包含一个迭代器和bool值,迭代器指向拥有该键德曼元素,而bool值则表明是否添加了该元素。

2.从set中获取元素

set1.find(sting ss);方法返回指向在set1中ss的迭代器

set1.count(string ss);返回的值只可能是0或者1(0表示不存在,1表示存在).

set中的键为const类型。

常用的几个方法 
  boolean add(E e) 
  如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
  boolean addAll(Collectionc) 
  如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。
  void clear() 
  移除此 set 中的所有元素(可选操作)。
  boolean contains(Object o) 
  如果 set 包含指定的元素,则返回 true。
  boolean containsAll(Collectionc) 
  如果此 set 包含指定 collection 的所有元素,则返回 true。
  boolean equals(Object o) 
  比较指定对象与此 set 的相等性。
  int hashCode() 
  返回 set 的哈希码值。
  boolean isEmpty() 
  如果 set 不包含元素,则返回 true。
  Iterator iterator() 
  返回在此 set 中的元素上进行迭代的迭代器。
  boolean remove(Object o) 
  如果 set 中存在指定的元素,则将其移除(可选操作)。
  boolean removeAll(Collectionc) 
  移除 set 中那些包含在指定 collection 中的元素(可选操作)。
  boolean retainAll(Collectionc) 
  仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。
  int size() 
  返回 set 中的元素数(其容量)。
  Object[] toArray() 
  返回一个包含 set 中所有元素的数组。
  T[]
  toArray(T[] a)
 
  返回一个包含此 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型。

set的用法的更多相关文章

  1. set<pair<int,int> >的用法

    例题链接:https://vjudge.net/contest/236677#problem/D 题意:首先输入两个数字n,m.n表示有n张桌子,编号从1到n,m表示有m个操作, 然后接下来一行有n个 ...

  2. set<pair<int,int> > 的运用

    In this cafeteria, the N tables are all ordered in one line, where table number 1 is the closest to ...

  3. binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法

    package com.Summer_0420.cn; import java.util.Arrays; /** * @author Summer * binarySearch(int[] a,int ...

  4. Python中int()函数的用法浅析

      int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int)  Help on class int in module __builti ...

  5. c++ 中pair类模板的用法详解

    pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...

  6. 数制转换itoa atoi int转字符串 字符串转int string转int int转string

    在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...

  7. C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);

    问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...

  8. Undefined symbols for architecture i386: "MyGetOpenALAudioData(__CFURL const*, int*, int*, int*)"

    今天把apple developer上的例子程序oalTouch中的MyOpenALSupport.h和MyOpenALSupport.c添加到自己的工程中,并在另一个文件xxx.cpp里调用,结果出 ...

  9. 自定义函数中的参数返回值 “-> (Int -> Int)”的问题

    func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { + number } retur ...

  10. void (*f(int, void (*)(int)))(int) 函数解析 转

    今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者 ...

随机推荐

  1. Javascript 学习之路:鼠标长按事件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. HashMap合并相同key的value

    Map<String, String> map1 = new HashMap<>(); map1.put("x", "y"); map1 ...

  3. 【spring bean】 spring中bean之间的引用以及内部bean

    在spring中会有如下的几种情况: 1.在当前容器中,(即在spring.xml这一个配置文件中),一个bean引用了另一个bean. 使用 1>  <ref  bean="另 ...

  4. 梳理源码中 View 的工作原理

    欢迎Follow我的GitHub, 关注我的掘金. 在View的工作过程中, 执行三大流程完成显示, 测量(measure)流程, 布局(layout)流程, 绘制(draw)流程. 从perform ...

  5. DSP using MATLAB 示例Example3.8

    代码: x = rand(1,11); n = 0:10; k = 0:500; w = (pi/500)*k; % [0,pi] axis divided into 501 points. X = ...

  6. 5.15[没什么营养的一段日子]A*

    五月份没有写过blog. 期中考刚过......漫漫文化课,无尽头. 马上要为联赛开坑了,激动啊. 刚听了孙柘的演讲..%%% 最近刷的题只有一道启发式合并,一道分层图,一道差分约束..然后不知不觉破 ...

  7. LightOJ1283 Shelving Books(DP)

    题目 Source http://www.lightoj.com/volume_showproblem.php?problem=1283 Description You are a librarian ...

  8. 树形DP水题杂记

    BZOJ1131: [POI2008]Sta 题意:给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大. 题解:记录每个点的深度,再根据根节点的深度和逐层推导出其他点的深度和. ...

  9. Storm on Yarn :原理分析+平台搭建

    Storm on YARN: Storm on YARN被视为大规模Web应用与传统企业应用之间的桥梁.它将Storm事件处理平台与YARN(Yet Another Resource Negotiat ...

  10. Python3 安装bulitwith 和urllib2包

    # 背景 最近在看PACKT的Python Web Scraping, 书上用的是Python 2.X,但是自己电脑上却用的Python 3.4. 版本升级没什么好说的,只是很多的工具包并没有跟着升级 ...