当前位置: 首页 > news >正文

商城系统网站建设开发微信朋友圈广告在哪里做

商城系统网站建设开发,微信朋友圈广告在哪里做,学做标书的网站,咨询网站 模板文章目录set/multiset容器1 set容器 基本概念2 set容器 构造和赋值3 set容器 大小和交换4 set容器 插入和删除5 set容器 查找和统计set/multiset容器 1 set容器 基本概念 简介: 所有元素都会在插入时会被自动排序,例如,在set容器放入元素1、…

文章目录

  • set/multiset容器
    • 1 set容器 基本概念
    • 2 set容器 构造和赋值
    • 3 set容器 大小和交换
    • 4 set容器 插入和删除
    • 5 set容器 查找和统计

set/multiset容器

1 set容器 基本概念

简介: 所有元素都会在插入时会被自动排序,例如,在set容器放入元素1、5、9、3、4、7时,打印输出变成1、3、4、5、7、9.

本质: set/multiset属于关联式容器,底层结构是用二叉树实现。

set和multiset区别

  • set:不允许容器中有重复的元素,不能插重值元素
  • multiset:允许容器中有重复的元素,可以插重值元素
  • 两个容器使用时,包含头文件#include<set>即可

2 set容器 构造和赋值

功能描述: 创建set容器以及赋值

构造:

  • set<T> st; //默认构造函数:
  • set(const set &st); //拷贝构造函数
    注意: 和之前的容器不同,没有像string、vector、deque、list一样有push_back()、push_front()、pop_back()、pop_front()插入数据,也没有像stack、queue一样有push()和pop()插入数据。set插入数据时只有insert()。

赋值:

  • set& operator=(const set &st); //重载等号操作符

代码示例:

void printSet(const set<int>& s)
{for (set<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}void printmMultiset(const multiset<int>& s)
{for (multiset<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}void test()
{int n = 50;set<int> s1;//set只有insert()方式插入数据s1.insert(18);s1.insert(23);s1.insert(25);s1.insert(23);s1.insert(21);s1.insert(23);s1.insert(20);cout << "默认构造 set\t   s1:";//set容器特点:所有元素插入时会被排序,且不允许有重复元素printSet(s1);cout << string(n, '-') << endl;set<int> s2(s1);cout << "拷贝构造 set\t   s2:";printSet(s2);cout << string(n, '-') << endl;set<int> s3;s3 = s2;cout << "复制操作 set\t   s3:";printSet(s3);cout << string(n, '-') << endl;multiset<int> s4;//multiset只有insert()方式插入数据s4.insert(18);s4.insert(23);s4.insert(25);s4.insert(23);s4.insert(21);s4.insert(23);s4.insert(20);cout << "默认构造 multiset  s4:";//multiset容器特点:所有元素插入时会被排序,且允许有重复元素printmMultiset(s4);cout << string(n, '-') << endl;
}

在这里插入图片描述
总结:

  • set容器插入数据时用insert
  • set容器插入数据的数据会自动排序
  • set不允许有重复元素,mutiset允许有重复元素

3 set容器 大小和交换

功能描述: 统计set容器大小以及交换set容器

函数原型:

  • size(); //返回容器中元素的数目
  • empty(); //判断容器是否为空
  • swap(st); //交换两个集合容器

注意: 在set中没有resize(),不允许重新指定大小。在之前学习的容器中,resize()默认机制是0填充,而set不允许有重复值,所有不能有resize()。

代码示例:

void printSet(const set<int>& s)
{for (set<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}void printmMultiset(const multiset<int>& s)
{for (multiset<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}void setisEmpty(const set<int>& s)
{if (s.empty()){cout << "set容器为空!" << endl;}else{cout << "set容器不为空,且容器大小为:" << s.size() << endl;}
}//大小
void test1()
{cout << "大小操作\n" << endl;int n = 50;set<int> s1;cout << "插值前 set\ts1:";printSet(s1);setisEmpty(s1);cout << string(n, '-') << endl;//set只有insert()方式插入数据s1.insert(18);s1.insert(23);s1.insert(25);s1.insert(23);s1.insert(21);s1.insert(23);s1.insert(20);cout << "插值后 set\ts1:";printSet(s1);setisEmpty(s1);cout << string(n, '-') << endl;
}//交换
void test2()
{cout << "\n交换操作\n\n交换前" << endl;int n = 50;multiset<int> s1;s1.insert(18);s1.insert(23);s1.insert(25);s1.insert(23);s1.insert(21);s1.insert(23);s1.insert(20);cout << "multiset\ts1:";printmMultiset(s1);cout << string(n, ' ') << endl;multiset<int> s2;s2.insert(14);s2.insert(10);s2.insert(15);s2.insert(11);s2.insert(12);s2.insert(13);cout << "multiset\ts2:";printmMultiset(s2);cout << string(n, '-') << endl;cout << "交换后\ns1:";printmMultiset(s1);cout << string(n, ' ') << endl;cout << "s2:";printmMultiset(s2);cout << string(n, '-') << endl;
}

在这里插入图片描述

总结:

  • 统计大小 — size,不支持resize
  • 判断是否为空 — empty
  • 交换容器 — swap

4 set容器 插入和删除

功能描述: set容器进行插入数据和删除数据

函数原型:

  • insert(elem); //在容器中插入元素。
  • clear(); //清除所有元素
  • erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。
  • erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
  • erase(elem); //删除容器中值为elem的元素。

注意: 没有头插头删和尾插尾删的操作,插入只有insert。set的删除可以传入迭代器、区间,还可以指定值删除,类似于list的remove。

代码示例:

void printSet(const set<int>& s)
{for (set<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}//插入
void test1()
{int n = 50;set<int> s1;//set只有insert()方式插入数据s1.insert(18);s1.insert(23);s1.insert(25);s1.insert(23);s1.insert(21);s1.insert(23);s1.insert(20);cout << "删除前\t\ts1:";printSet(s1);cout << string(n, '-') << endl;//删除s1.erase(s1.begin());//删除第一个元素cout << "删除第一个元素\ts1:";printSet(s1);cout << string(n, '-') << endl;s1.erase(21);//删除指定元素cout << "删除指定元素\ts1:";printSet(s1);cout << string(n, '-') << endl;//清空//s1.erase(s1.begin(), s1.end());//erase清空s1.clear();cout << "清空\t\ts1:";printSet(s1);cout << string(n, '-') << endl;
}

在这里插入图片描述
总结:

  • 插入 — insert
  • 删除 — erase,可以指定元素删除,类似list的remove
  • 清空 — clear

5 set容器 查找和统计

功能描述: 对set容器进行查找数据以及统计数据

函数原型:

  • find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end(),结束的位置
  • count(key); //统计key的元素个数。对set而言,返回值是0或1,set不允许有重复值;对multiset而言,返回值有可能大于1,multiset允许有重复值。

代码示例:

void printSet(const set<int>& s)
{for (set<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}void printMultiset(const multiset<int>& s)
{for (multiset<int>::const_iterator it = s.begin(); it != s.end(); it++){cout << *it << "  ";}cout << endl;
}void test1()
{int n = 50;set<int> s1;s1.insert(18);s1.insert(23);s1.insert(25);s1.insert(23);s1.insert(21);s1.insert(23);s1.insert(20);multiset<int> s2;s2.insert(18);s2.insert(23);s2.insert(25);s2.insert(23);s2.insert(21);s2.insert(23);s2.insert(20);cout << "s1:";printSet(s1);cout << string(n, ' ') << endl;cout << "s2:";printMultiset(s2);cout << string(n, '-') << endl;//查找cout << "\n查找" << endl;set<int>::iterator pos1 = s1.find(21);cout << "查找21元素\ns1:";if (pos1!=s1.end()){cout << "查找成功,值为:" << * pos1 << endl;}else{cout << "查找失败,值不存为或为空容器!" << endl;}cout << string(n, ' ') << endl;set<int>::iterator pos2 = s2.find(21);cout << "查找21元素\ns2:";if (pos2 != s2.end()){cout << "查找成功,值为:" << *pos2 << endl;}else{cout << "查找失败,值不存为或为空容器!" << endl;}cout << string(n, '-') << endl;//统计cout << "\n统计" << endl;int num1 = s1.count(23);cout << "set    s1中23的个数为:" << num1 << endl;cout << string(n, '-') << endl;int num2 = s2.count(23);cout << "multiset s2中23的个数为:" << num2 << endl;cout << string(n, '-') << endl;
}

在这里插入图片描述

总结:

  • 查找 — find (返回的是迭代器)
  • 统计 — count (对于set,结果为0或者1)
http://www.yayakq.cn/news/189287/

相关文章:

  • 网站logo的作用wordpress 嵌入 插件
  • 深圳考试培训网站建设wordpress 调节显示文章位置
  • 广州市企业网站建设如何做网络平台
  • 手机端网站建设的费用清单永久域名最新网站
  • 帝国做的网站打开速度网站建设和网站编辑是什么工作
  • 做网站需要代码吗常州被约谈企业主公司发讣告
  • 乡村建设相关网站河南省工程建设监理协会网站
  • 哪有做婚介网站的西安市建设干部学校网站
  • 手机网站制作行业排行网络运营商远端无响应
  • 做网站卖游戏装备做淘宝货源网站
  • 网站开发合同模板常平网站公司
  • 微信网络推广方案wordpress优化
  • 印记室内设计网站海外海外网站建设
  • 网站首屏高度网络工程规划与设计案例
  • 深圳团购网站设计wordpress的点商
  • 涟水做网站机关公文写作网站
  • 章丘哪里有建设网站的wordpress 文章 两边
  • 网站后台用什么语言合适怎样制作软件程序
  • 网站建设必须配置网站开发工程师岗位描述
  • 做网站 长wordpress短链接插件
  • 怎么做招聘网站链接html静态网页制作成品
  • 网站建设推荐网网站开发合同下载
  • 苏州网站推广去苏州聚尚网络浙江省甲级设计院加盟
  • 设计网页的快捷网站重庆网站设计智能 乐云践新
  • 做黑帽需不需要搭建网站推广营销
  • 试描述一下网站建设的基本流程图网站文章怎么做内链
  • 在线编程网站开发seo网站优化流程
  • 网站空间ip需不需要备案做网站 图文教程
  • 网站怎么做咨询重庆沙盘制作
  • 北京网站制作培训学校邢台手机网站建设地方