当前位置: 首页 > 工具软件 > Map Index > 使用案例 >

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

卞琨
2023-12-01

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 中

 类似资料: