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;
}
第二句插入一个元素,
关键在于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的用法的更多相关文章
- set<pair<int,int> >的用法
例题链接:https://vjudge.net/contest/236677#problem/D 题意:首先输入两个数字n,m.n表示有n张桌子,编号从1到n,m表示有m个操作, 然后接下来一行有n个 ...
- set<pair<int,int> > 的运用
In this cafeteria, the N tables are all ordered in one line, where table number 1 is the closest to ...
- binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法
package com.Summer_0420.cn; import java.util.Arrays; /** * @author Summer * binarySearch(int[] a,int ...
- Python中int()函数的用法浅析
int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builti ...
- c++ 中pair类模板的用法详解
pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...
- 数制转换itoa atoi int转字符串 字符串转int string转int int转string
在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...
- C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);
问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...
- Undefined symbols for architecture i386: "MyGetOpenALAudioData(__CFURL const*, int*, int*, int*)"
今天把apple developer上的例子程序oalTouch中的MyOpenALSupport.h和MyOpenALSupport.c添加到自己的工程中,并在另一个文件xxx.cpp里调用,结果出 ...
- 自定义函数中的参数返回值 “-> (Int -> Int)”的问题
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { + number } retur ...
- void (*f(int, void (*)(int)))(int) 函数解析 转
今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者 ...
随机推荐
- Redis学习笔记(2) Redis基础类型及命令之一
1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...
- Understanding, Operating and Monitoring Apache Kafka
Apache Kafka is an attractive service because it's conceptually simple and powerful. It's easy to un ...
- linux服务器init 5启动图形界面,报错Retrigger failed udev events
今天因工作需要开启linux系统的桌面环境,使用startx未成功,报如下错误: [root@ /]# startx xauth: creating new authority xinit: No s ...
- Angular JS 学习之 Scope作用域
1.Scope作用域是应用在HTML(视图)和JavaScript(控制器)之间的纽带: Scope是一个对象,有可用的方法和属性: Scope可应用在视图和控制器上: 2.当你在AngularJS中 ...
- DSP using MATlAB 示例Example2.10
上代码 % noise sequence 1 x = [3, 11, 7, 0, -1, 4, 2]; nx = [-3:3]; % given signal x(n) [y,ny] = sigshi ...
- three.js透视投影照相机
透视投影照相机(Perspective Camera)的构造函数是: THREE.PerspectiveCamera(fov, aspect, near, far) 让我们通过一张透视照相机投影的图来 ...
- HDU4871 Shortest-path tree(最短路径树 + 树的点分治)
题目大概要先求一张边有权的图的根为1的最短路径树,要满足根到各点路径序列的字典序最小:然后求这棵最短路径树包含k个结点的最长路径的长度和个数. 首先先构造出这棵字典序最小的最短路径树..好吧,我太傻逼 ...
- 经典收藏 50个jQuery Mobile开发技巧集萃
http://www.cnblogs.com/chu888chu888/archive/2011/11/10/2244181.html 1.Backbone移动实例 这是在Safari中运行的一款Ba ...
- MySQL数据类型和常用字段属性总结
前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...
- Darkest page of my coding life
The code i wrote a while ago recently caused a disaster and as I reviewed it I found it is the silli ...