C++:STL常用函数模块总结(set)

Set

Sets是一个储存元素的容器,其中每个元素最多只出现一次,元素的遵循一个特定的顺序。元素一旦被放入次容器将不能被修改(修改元素的值),但是可以对元素进行插入和移除操作。Set内部的元素遵循严格弱排序,因此在寻找元素的时候比unordered_map稍微慢一些,但是可以直接通过指针操作子分组,set是一个典型的二分搜索树的应用。
定义程序
#include <iostream>
#include <set>

bool fncomp (int lhs, int rhs) {return lhs<rhs;}

struct classcomp {
  bool operator() (const int& lhs, const int& rhs) const
  {return lhs<rhs;}
};

int main ()
{
  std::set<int> first;                           // int型空set集合

  int myints[]= {10,20,30,40,50};
  std::set<int> second (myints,myints+5);        // 范围

  std::set<int> third (second);                  // 复制second

  std::set<int> fourth (second.begin(), second.end());  // iterator ctor.

  std::set<int,classcomp> fifth;                 // 比较类

  bool(*fn_pt)(int,int) = fncomp;
  std::set<int,bool(*)(int,int)> sixth (fn_pt);  // 比较函数指针

  return 0;
}

基本操作

1、set::size:返回容器中的元素数量
#include <iostream>
#include <set>

int main ()
{
  std::set<int> 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:

0. size: 0
1. size: 10
2. size: 11
3. size: 10
2、set::empty:判断容器中元素数量是否为空(空则返回1)
3、set::begin:返回指向容器第一个元素的指针(如果元素为空,则返回不能被引用的空指针),遵循特定的排序顺序
4、set::end:原则上返回容器假设的“最后一个值的指针”,但是其返回的指针并不能被引用,一般与begin搭配使用用来表示特定的范围
#include <iostream>
#include <set>

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

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

  std::cout << '\n';

  return 0;
}

output:

myset contains: 13 23 42 65 75
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老潘的博客

请老潘吃块饼干!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值