IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 通过map 对 string 进行 switch 操作(优雅 + 后端必看) -> 正文阅读

[C++知识库]C++ 通过map 对 string 进行 switch 操作(优雅 + 后端必看)

10月23日操作记录:

1、c ++ 中stack声明和vector声明方式一致;

2、stack的top()方法只能获得栈顶元素,而不能删除,删除需用pop();

3、c ++ 中map的声明和java一样,只不过是小写,包含在头文件#include <map>中;

4、c ++ 中map没有put方法,插入元素当成数组插入,即map[index] = value,或者使用insert进行插入:

insert(std::pair<int, string>(key, value))

5、c ++ 中map元素的访问当成数组来访问,即value = map[index];

6、c ++ 中map通过value获得key的方式,提供函数如下;

#incldue <map>
vector<int> getKeyByValue(string s) {
 ? ?vector<int> keyVector;
    for (std::map<int, string>::iterator it = map.begin(); it !=    stringMap.end(); it ++) {
 ?      if (it -> second == value) {
 ? ? ? ? ? ?keyVector.push_back(it -> first);
 ?      }
    }
 ? ?return keyVector;
}

这里注意返回的是一个key的vector,因为同一个value可能拥有多个key;但key是唯一的,当insert进一个已包含的key键值对时,本次insert是无效的;

7、c ++ 中string无需通过stycmp进行比对,可通过string._Equal()进行比对;

8、c ++ 中char类型可通过字符流stringstream转换为string, 提供函数如下:

#include <sstream>
string charToString(char c) {
 ? ?string s;
 ? ?stringstream transform;
 ? ?transform << c;
 ? ?s = transform.str();
 ? ?return s;
}

9、如何用switch对string类型进行选择?

switch只支持对常量进行选择,即基本数据类型,为了保持代码优雅,避免大量if、else语句的出现,可通过map或enum对需要选择的引用类型进行管理:

#include <map>
map<int, string> switchMap;
void input(int n, vector<string> stringVector) {
 ? ?for (int i = 0; i < n; i ++) {
 ? ? ? ?string s;
 ? ? ? ?getline(cin, s);
 ? ? ? ?stringVector.push_back(s);
 ? ? ? ?switchMap.insert(std::pair<int, string>(i, s));
 ?  }
}
?
vector<int> getKeyByValue(string s) {
 ? ?vector<int> keyVector;
    for (std::map<int, string>::iterator it = map.begin(); it !=    stringMap.end(); it ++) {
 ?      if (it -> second == value) {
 ? ? ? ? ? ?keyVector.push_back(it -> first);
 ?      }
    }
 ? ?return keyVector;
}
?
void operateSwitch(string s) {
 ? ?vector<int> keyVector = getKeyByValue(s);
 ? ?for (int i = 0; i < keyVector.size(); i ++) {
 ? ? ? ?switch(keyVector[i]) {
 ? ? ? ? ? ?case 1 : cout << switchMap[keyVector[i]] << endl; break;
 ? ? ? ? ? ?case 2 : cout << switchMap[keyVector[i]] << endl; break;
 ? ? ? ? ? ?case 3 : ......
 ? ? ? ? ?  ......
 ? ? ?  }
 ?  }
}

这里只是随手写个demo,只是为了传达这种思想, enum同样可以做到;

同样的方法也可以用到 JAVA 中

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:21:44  更:2021-10-25 12:22:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:21:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码