栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ set

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ set

参考链接:http://www.cplusplus.com/reference/set/set/find/

顺序容器顺序容器适配器关联容器
vector(支持快速随机访问)stack(LIFO栈)set(红黑树,高效的平衡检索二叉树)
list(支持快速插入/删除)queue(FIFO队列)map
deque(双端队列)priority_queue(有优先级管理的队列)

顺序容器提供了快速顺序访问元素的能力。
关联容器支持高效的关键字查找和访问。

一、set容器分类
    set:关键字即值,只保存唯一的关键字multiset:关键字可重复出现
二、set具备的两个特点
    set中的元素都是拍好序的ser中的元素都是唯一的(有的比赛解题用这个思路还是很方便的)
三、set用法
    set::begin
// set::begin/end
#include 
#include 

int main ()
{
  int myints[] = {75,23,65,42,13};
  std::set myset (myints,myints+5);

  std::cout << "myset contains:";
  for (std::set::iterator it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;

  std::cout << 'n';

  return 0;
}
//Output:
//myset contains: 13 23 42 65 75
    set::end
// set::begin/end
#include 
#include 

int main ()
{
  int myints[] = {75,23,65,42,13};
  std::set myset (myints,myints+5);

  std::cout << "myset contains:";
  for (std::set::iterator it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;

  std::cout << 'n';

  return 0;
}
//Output:
//myset contains: 13 23 42 65 75
    insert(有序,唯一)

简单:

#include
#include
using namespace std;
int main(){
	set mySet;
	mySet.insert(5);
	mySet.insert(3);
	mySet.insert(4);
	mySet.insert(4);
	
	cout << "mySet contains:";
	for(set::iterator it=mySet.begin(); it!=mySet.end(); ++it){
		cout<< ' ' << *it;
	}
	
	cout << 'n';
	
	return 0;
} 
//Output:
//mySet contains: 3 4 5

较复杂

#include 
#include 

int main ()
{
  std::set myset;
  std::set::iterator it;
  std::pair::iterator,bool> ret;

  // set some initial values:
  for (int i=1; i<=5; ++i) myset.insert(i*10);    // set: 10 20 30 40 50

  ret = myset.insert(20);               // no new element inserted

  if (ret.second==false) it=ret.first;  // "it" now points to element 20

  myset.insert (it,25);                 // max efficiency inserting
  myset.insert (it,24);                 // max efficiency inserting
  myset.insert (it,26);                 // no max efficiency inserting

  int myints[]= {5,10,15};              // 10 already in set, not inserted
  myset.insert (myints,myints+3);

  std::cout << "myset contains:";
  for (it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  return 0;
}
//Output:
//myset contains: 5 10 15 20 24 25 26 30 40 50
    set::clear
#include 
#include 

int main ()
{
  std::set myset;

  myset.insert (100);
  myset.insert (200);
  myset.insert (300);

  std::cout << "myset contains:";
  for (std::set::iterator it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  myset.clear();
  myset.insert (1101);
  myset.insert (2202);

  std::cout << "myset contains:";
  for (std::set::iterator it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  return 0;
}
//Output//
//myset contains: 100 200 300
//myset contains: 1101 2202
    erase
#include 
#include 

int main ()
{
  std::set myset;
  std::set::iterator it;

  // insert some values:
  for (int i=1; i<10; i++) myset.insert(i*10);  // 10 20 30 40 50 60 70 80 90

  it = myset.begin();
  ++it;                                         // "it" points now to 20

  myset.erase (it);

  myset.erase (40);

  it = myset.find (60);
  myset.erase (it, myset.end());

  std::cout << "myset contains:";
  for (it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  return 0;
 }
//Output
//myset contains: 10 30 50
    set::find
#include 
#include 

int main ()
{
  std::set myset;
  std::set::iterator it;

  // set some initial values:
  for (int i=1; i<=5; i++) myset.insert(i*10);    // set: 10 20 30 40 50

  it=myset.find(20);
  myset.erase (it);
  myset.erase (myset.find(40));

  std::cout << "myset contains:";
  for (it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  return 0;
}
//Output:
//myset contains: 10 30 50
    set::size
#include 
#include 

int main ()
{
  std::set myints;
  std::cout << "0. size: " << myints.size() << 'n';

  for (int i=0; i<10; ++i) myints.insert(i);
  std::cout << "1. size: " << myints.size() << 'n';

  myints.insert (100);
  std::cout << "2. size: " << myints.size() << 'n';

  myints.erase(5);
  std::cout << "3. size: " << myints.size() << 'n';

  return 0;
}
//Output:

    swap
#include 
#include 

main ()
{
  int myints[]={12,75,10,32,20,25};
  std::set first (myints,myints+3);     // 10,12,75
  std::set second (myints+3,myints+6);  // 20,25,32

  first.swap(second);

  std::cout << "first contains:";
  for (std::set::iterator it=first.begin(); it!=first.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  std::cout << "second contains:";
  for (std::set::iterator it=second.begin(); it!=second.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << 'n';

  return 0;
}
//Output:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号