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

购买网站做网页游戏策划网络营销方案

购买网站做网页游戏,策划网络营销方案,在线表白网页制作,关于加强政府网站建设的意见1. map插入操作基础 map是C STL中的关联容器&#xff0c;存储键值对(key-value pairs)。插入元素时有四种主要方式&#xff0c;各有特点&#xff1a; 1.1 头文件与声明 #include <map> using namespace std;map<int, string> mapStu; // 键为int&#xff0c;值…

1. map插入操作基础

map是C++ STL中的关联容器,存储键值对(key-value pairs)。插入元素时有四种主要方式,各有特点:

1.1 头文件与声明

#include <map>
using namespace std;map<int, string> mapStu;  // 键为int,值为string

2. 四种插入方式详解

2.1 方式一:构造pair后插入

pair<map<int, string>::iterator, bool> ret = mapStu.insert(pair<int, string>(1, "张三"));

特点

  • 显式构造pair对象
  • insert返回一个pair<iterator, bool>
    • first:指向插入元素的迭代器
    • second:是否插入成功(bool)

示例判断

if (ret.second == true) {cout << "插入成功!value:" << (*(ret.first)).second << endl;
} else {cout << "插入失败!" << endl;  // 键已存在时会失败
}

注意:对于map,如果键已存在,插入会失败,不会覆盖原有值。

2.2 方式二:使用make_pair

mapStu.insert(make_pair(2, "李四"));

优点

  • 语法更简洁,无需显式指定模板参数
  • 自动推导pair类型
  • 同样返回pair<iterator, bool>

2.3 方式三:使用value_type

mapStu.insert(map<int, string>::value_type(3, "王五"));

特点

  • value_type是map内部定义的typedef,等同于pair<const Key, T>
  • 类型安全,确保键的类型正确
  • 同样返回pair<iterator, bool>

2.4 方式四:使用[]操作符

mapStu[4] = "赵六";      // 插入
mapStu[4] = "小赵六";    // 修改

关键特性

  1. 查找+插入/修改:先查找键是否存在,不存在则插入,存在则修改
  2. 可能意外插入:访问不存在的键时会自动插入
    string strName = mapStu[8];  // 键8不存在时会自动插入
    
  3. 返回值:返回值的引用,可直接修改

特殊用法

mapStu[6] = mapStu[5];  // 复制键5的值到键6
mapStu[7] = mapStu[4];  // 复制键4的值到键7

3. 四种方式对比

特性方式一(pair)方式二(make_pair)方式三(value_type)方式四([])
语法复杂度
返回值pair<iter,bool>pair<iter,bool>pair<iter,bool>值引用
键存在时的行为不覆盖不覆盖不覆盖覆盖
可能意外插入
类型安全性最高
性能中等中等中等稍快

4. 遍历map内容

for (map<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++) {cout << it->first << ", " << it->second << endl;
}

或使用C++11范围for循环:

for (const auto& pair : mapStu) {cout << pair.first << ", " << pair.second << endl;
}

5. 关键注意事项

  1. 键的唯一性map中每个键只能出现一次,重复插入会失败
  2. 自动排序:元素按键的升序自动排列
  3. []操作符的风险
    • 可能意外插入新元素
    • 访问不存在的键时会用默认值创建新元素
  4. 性能考虑
    • 插入操作平均时间复杂度O(log n)
    • 对于已知不存在的键,使用insert[]更高效

6. 实际应用建议

  1. 需要知道是否插入成功:使用insert+检查返回值
  2. 需要覆盖现有值:使用[]操作符
  3. 避免意外插入:先用find检查键是否存在
  4. 代码简洁性:优先考虑make_pairemplace(C++11)

7. 完整代码回顾

#include <map>
#include <iostream>using namespace std;int main() {map<int, string> mapStu;// 方式一auto ret = mapStu.insert(pair<int, string>(1, "张三"));if (ret.second) {cout << "插入成功!value:" << ret.first->second << endl;} else {cout << "插入失败!" << endl;}// 重复插入测试ret = mapStu.insert(pair<int, string>(1, "小张三"));if (!ret.second) {cout << "插入小张三失败!" << endl;}// 方式二mapStu.insert(make_pair(2, "李四"));// 方式三mapStu.insert(map<int, string>::value_type(3, "王五"));// 方式四mapStu[4] = "赵六";mapStu[4] = "小赵六";  // 覆盖// 特殊用法mapStu[6] = mapStu[5];  // 复制mapStu[7] = mapStu[4];  // 复制// 遍历输出for (const auto& pair : mapStu) {cout << pair.first << ", " << pair.second << endl;}system("pause");return 0;
}

8. 扩展知识

8.1 C++11的emplace

C++11引入了更高效的emplace方法:

mapStu.emplace(5, "钱七");  // 直接在容器内构造元素,避免临时对象

8.2 异常安全性

insertemplace提供强异常保证:如果插入失败,容器保持不变。

8.3 性能优化

对于大批量插入:

  1. 如果键已知有序,可以使用提示位置插入:
    mapStu.insert(hint_iterator, make_pair(10, "孙八"));
    
  2. 或者先构建vector再批量插入
http://www.dtcms.com/wzjs/454896.html

相关文章:

  • 信阳做网站 汉狮网络长沙网站建设公司
  • 中国建设网站红黑榜名单seo好学吗入门怎么学
  • 小说投稿赚钱的网站网上国网app
  • 全国免费发布广告信息平台郑州seo联系搜点网络效果好
  • 国家税务总局网站官网生意参谋指数在线转换
  • 中国品牌加盟网官网关键词优化软件
  • 网站建设的安全防护方法泰州seo外包
  • 做任务的网站smseo网课培训
  • 制作简易网站模板百度官网首页登录入口
  • 凡科建站seo最近的电脑培训班在哪里
  • 手机开网站北京网站优化托管
  • 做海报创意网站网络广告营销案例有哪些
  • 设计网站私单价格网站底部友情链接代码
  • 购物网站图片的放大怎么做的怎么看百度关键词的搜索量
  • 学做ppt推荐网站人工智能培训机构
  • 莆田 网站建设爱站网站排名查询工具
  • 网站备案完成2023广东最新疫情
  • 南昌做企业网站推广团队在哪里找
  • 免费网站为何收录比较慢爱站网长尾关键词挖掘
  • 做的美食视频网站种子搜索引擎torrentkitty
  • 辽阳网站制作推广网页怎么做的
  • 枣阳网站建设等服务江苏企业网站建设
  • 怀化找什么人做网站seo专业培训费用
  • 网站开发费会计分录请你设计一个网络营销方案
  • 建站行业消失了吗seo综合查询站长工具怎么用
  • 建筑公司二级资质要求河北seo技术
  • 网页设计师职业规划北京百度快速优化排名
  • 衡阳做网站的公司国外最好的免费建站
  • 武汉招聘信息最新招聘肇庆百度快照优化
  • 花卉网站开发可行性百度怎么做推广