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

做b2c网站需要多少钱合肥seo排名扣费

做b2c网站需要多少钱,合肥seo排名扣费,各手机厂商定制版app,网站设计应该考虑的重要因素概述 map和multimap是C STL中的关联容器,它们存储的是键值对(key-value pairs),并且会根据键(key)自动排序。两者的主要区别在于: map不允许重复的键multimap允许重复的键 本文将详细解析示例代码中涉及的map操作,包括赋值、排…

概述

mapmultimap是C++ STL中的关联容器,它们存储的是键值对(key-value pairs),并且会根据键(key)自动排序。两者的主要区别在于:

  • map不允许重复的键
  • multimap允许重复的键

本文将详细解析示例代码中涉及的map操作,包括赋值排序大小查询删除等核心功能。

1. 头文件与命名空间

#include <iostream>
#include <map>using namespace std;
  • #include <map>:必须包含的头文件,提供mapmultimap的实现
  • using namespace std:使用标准命名空间,避免每次都要写std::

2. 自定义排序规则(仿函数)

class CompareInt {
public:bool operator()(const int& left, const int& right) const {return left > right;  // 降序排序}
};
  • 仿函数(Functor):重载了()运算符的类,可以像函数一样调用
  • 这里实现了降序排序规则,当left > right时返回true
  • 注意operator()应该声明为const,因为它不修改对象状态

3. map的声明与初始化

map<int, string> mapStu;  // 默认less 升序排序
//map<int, string,greater<int>> mapStu;  // greater 降序排序
//map<int, string,CompareInt> mapStu;  // 使用自定义仿函数
  • 默认排序:不指定第三个模板参数时,使用less<Key>,即升序排序
  • 内置排序规则:可以使用greater<Key>实现降序排序
  • 自定义排序:通过传递自定义的仿函数类型作为第三个模板参数

4. 插入元素

mapStu.insert(pair<int, string>(2, "小明"));
mapStu.insert(pair<int, string>(3, "廉颇"));
mapStu.insert(pair<int, string>(1, "妲己"));
mapStu.insert(pair<int, string>(4, "庄周"));
  • insert():插入键值对
  • 使用pair构造键值对,first是键,second是值
  • 插入后元素会根据键自动排序

5. 拷贝构造与赋值

map<int, string> mapB(mapStu);   // 拷贝构造
map<int, string> mapC = mapStu;  // 赋值操作
  • 拷贝构造:创建一个新map并复制所有元素
  • 赋值操作:将已有map的所有元素复制到另一个map
  • 两种方式都会创建与原map完全相同的新容器

6. 元素访问与修改

mapC[3] = "小乔";  // 通过键访问并修改值
  • operator[]:通过键访问对应的值
  • 如果键不存在,会自动插入该键,值为默认构造

7. 交换操作

mapC.swap(mapB);  // 交换两个map的内容
  • swap():高效交换两个map的内容
  • 实际只交换内部指针,不复制元素,时间复杂度O(1)

8. 删除操作

8.1 删除区间元素
map<int, string>::iterator iBegin = mapB.begin();
++iBegin;
map<int, string>::iterator iEnd = mapB.end();
mapB.erase(iBegin, iEnd);  // 删除[iBegin, iEnd)区间
  • erase(beg, end):删除迭代器区间[beg, end)内的元素
  • 区间是半闭半开的,包含beg但不包含end
  • 返回void(新标准返回下一个元素的迭代器)
8.2 删除单个元素
mapC.erase(mapC.begin());  // 删除第一个元素
mapC.erase(4);             // 删除键为4的元素
  • erase(pos):删除迭代器pos指向的元素
  • erase(key):删除所有键等于key的元素(对于map最多一个)
8.3 清空容器
mapC.clear();  // 清空所有元素
  • clear():删除容器中的所有元素,使size为0
8.4 删除结果检查
map<int, string, greater<int>>::size_type st = mapStu.erase(5);
cout << "st = " << st << endl;  // 输出删除的元素个数
  • **erase(key)**返回删除的元素个数
  • 对于map,返回值只能是0或1
  • 对于multimap,返回值可以是任意非负整数

9. 大小查询

if (!mapC.empty()) {cout << "mapC的大小: " << mapC.size() << endl;
}
  • empty():检查容器是否为空
  • size():返回容器中元素的个数
  • 通常先检查empty()再调用size()更安全

10. 迭代器遍历

for (map<int, string, CompareInt>::iterator it = mapStu.begin(); it != mapStu.end(); it++) {cout << "key: " << (*it).first << "  value: " << (*it).second << endl;
}
  • begin()/end():获取首元素和尾后迭代器
  • 迭代器解引用得到pair<const Key, Value>
  • 可以用it->firstit->second访问键和值

完整代码回顾

#include <iostream>
#include <map>using namespace std;// 仿函数用于比较int(降序排序)
class CompareInt {
public:bool operator()(const int& left, const int& right) const {return left > right;    // 降序排序}
};int main(void) {map<int, string> mapStu;  // 默认less 升序排序//map<int, string,greater<int>> mapStu;  // greater 降序排序// 使用自定义的仿函数作为比较器//map<int, string,CompareInt> mapStu;  mapStu.insert(pair<int, string>(2, "小明"));mapStu.insert(pair<int, string>(3, "廉颇"));mapStu.insert(pair<int, string>(1, "妲己"));mapStu.insert(pair<int, string>(4, "庄周"));// map对象的拷贝构造与赋值map<int, string> mapB(mapStu);   // 拷贝构造for (map<int, string>::iterator it = mapB.begin(); it != mapB.end(); it++) {cout << "key: " << (*it).first << "  value: " << (*it).second << endl;}cout << endl;map<int, string> mapC = mapStu;  // 赋值for (map<int, string>::iterator it = mapC.begin(); it != mapC.end(); it++) {cout << "key: " << (*it).first << "  value: " << (*it).second << endl;}cout << endl;mapC[3] = "小乔";mapC.swap(mapB);// map的删除map<int, string>::iterator iBegin = mapB.begin();++iBegin;map<int, string>::iterator iEnd = mapB.end();mapB.erase(iBegin, iEnd);  // 删除区间mapC.erase(mapC.begin());  // 删除第一个元素mapC.erase(4);             // 删除key为4的元素mapC.clear();              // 清空容器map<int, string, greater<int>>::size_type st = mapStu.erase(5);cout << "st = " << st << endl;  // 输出删除个数// map的大小if (!mapC.empty()) {cout << "mapC的大小: " << mapC.size() << endl;}// 遍历mapfor (map<int, string, CompareInt>::iterator it = mapStu.begin(); it != mapStu.end(); it++) {cout << "key: " << (*it).first << "  value: " << (*it).second << endl;}system("pause");return 0;
}
http://www.dtcms.com/wzjs/256232.html

相关文章:

  • 网站建设 辉煌电商网络推广图片大全
  • 盐城网站建设培训学校2024年阳性最新症状
  • 靠谱的代做毕设网站网络推广网络营销软件
  • 彩票系统开发搭建彩票网站服务器安全怎么做青岛seo建站
  • 在线视频网站怎么做seo推广网络
  • 做网站的职业规划培训seo去哪家机构最好
  • 做模特的网站病毒式营销案例
  • 网站导航cms常用的搜索引擎有哪些
  • 哪个购物网站最便宜郑州竞价代运营公司
  • 南昌做网站哪家公司好旺道优化软件
  • 网站日志类型百度关键词排名联系方式
  • 网站升级维护中页面湖南seo优化哪家好
  • 做公司网站的平台简述网站推广的方式
  • 绍兴seo网站管理网站首页的优化
  • 装修网站怎么做的好处免费的个人网站html代码
  • 网站微信分享链接怎么做的产品seo标题是什么
  • 日本做a视频网站网站制作推广
  • 开公司 专做网站餐饮营销引流都有什么方法
  • 家政 东莞网站建设互联网营销师报名入口官网
  • 北京建网站的公司哪个比较好石嘴山网站seo
  • php企业门户网站模板关键词搜索引擎优化推广
  • 网站开发流程图工具百度seo怎么收费
  • 企业网站app百度公司推广
  • 武汉优秀历史建筑网站百度最怕哪个部门去投诉
  • asp网站一打开就是download360免费建站系统
  • 织梦做社交网站合适吗百度快照怎么优化排名
  • 南宫网站建设个人网页设计作品模板
  • 网站ip段屏蔽抚顺seo
  • 无极电影谷歌seo 外贸建站
  • 网站分页设计作用seo sem优化