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

C++ 通过map 对 string 进行 switch  *** 作(优雅 + 后端必看),第1张

C++ 通过map 对 string 进行 switch *** 作(优雅 + 后端必看) 10月23日 *** 作记录:

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

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

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

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

insert(std::pair(key, value))

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

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

#incldue 
vector getKeyByValue(string s) {
    vector keyVector;
    for (std::map::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 
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 switchMap;
void input(int n, vector stringVector) {
    for (int i = 0; i < n; i ++) {
        string s;
        getline(cin, s);
        stringVector.push_back(s);
        switchMap.insert(std::pair(i, s));
    }
}
​
vector getKeyByValue(string s) {
    vector keyVector;
    for (std::map::iterator it = map.begin(); it !=    stringMap.end(); it ++) {
        if (it -> second == value) {
            keyVector.push_back(it -> first);
        }
    }
    return keyVector;
}
​
void operateSwitch(string s) {
    vector 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 中

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4746173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存