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. 数字信号处理实验(五)——IIR滤波器的设计

    一.使用自编函数设计IIR滤波器 1.冲激响应法 (1)注给出的数字滤波器指标先化成模拟指标 (2)设计出模拟滤波器: (3)使用冲激响应法转化成数字滤波器 (4)一个demo clear all; ...

  2. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...

  3. Linux环境变量设置指南

    以配置java环境变量为例 目录 [隐藏]  1 修改/etc/profile文件 2 修改用户目录下的.bash_profile 3 修改.bashrc文件 4 直接在shell下设置 5 查看环境 ...

  4. DSP using MATLAB示例 Example3.5

    代码: n = [0:10]; x = (0.9*exp(j*pi/3)).^n; % x(n) = k = -200:200; w = (pi/100)*k; % [0,pi] axis divid ...

  5. Android自动化测试 - MonkeyRunner(二) 锤子便签测试脚本

    来源于:http://testerhome.com/topics/878 # encoding=utf-8 #导入python中自带的time模块和sys模块,脚本中都要用到它们. import ti ...

  6. jQuery入门第三天

    每个HTML元素根据继承属性都有父parent元素. 举个例子,h3 元素的父元素是 <div class="container-fluid">,<div cla ...

  7. Codeforces 580D Kefa and Dishes(状压DP)

    题目大概说要吃掉n个食物里m个,吃掉各个食物都会得到一定的满意度,有些食物如果在某些食物之后吃还会增加满意度,问怎么吃满意度最高. dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大 ...

  8. C#遍历enum类型

    对于enum类型: 使用foreach遍历enum类型的元素并填充combox foreach ( HatchStyle hs1 in Enum.GetValues(typeof(HatchStyle ...

  9. myeclipse操作记录

    myeclipse里面jsp页面里面js注释快捷键 ctrl + shift +cctrl + / MyEclipse 每次保存都要building workspace的解决方法 方法一:菜单栏-&g ...

  10. BZOJ3583 : 杰杰的女性朋友

    将$I$转置,设$G=OI$,则$ans=G^0+G^1+...+G^d$. 注意到$G^d=O(IO)^{d-1}I$,而$IO$是大小为$k\times k$的矩阵,可以通过倍增在$O(k^3\l ...