C++ STL 学习记录
记录在LeetCode刷题过程中使用C++ STL库的要点。
一、map 相关
排序
基于key 排序
1、map需要在创建时,指定排序方法,若key为自定义类型,需要重载比较运算符 2、map无法使用sort函数
eg:
struct comLen{
bool operator(const string &lhs, const string &rhs)
{return lhs.length()<rhs.length();}
}
map<string,int,comLen> LenLessMap;
基于value排序
迂回战术:map无法使用sort()接口,也就无法重载运算符,指定使用value进行比较。因此,将map转化成vector类型,进行排序。 tips:线性的(如vector,list,deque)容器才能使用sort,关联容器不行
代码eg:
map<string,int> m;
元素插入过程
vector<pair<string,int> > vec(m.begin(),m.end());
sort(vec.begin(),vec.end(),combyValue);
二、string 相关
分隔字符串
1、通过stringstream实现,注意stingstream的使用需要包含sstream头文件,且只能以char类型作为分隔符;
vector<string> split3(const string &str, const char pattern)
{
vector<string> res;
stringstream input(str);
string temp;
while(getline(input, temp, pattern))
{
res.push_back(temp);
}
return res;
}
功能
1、substr(i, j) 返回index从i到j的前一个的子串; substr(i)返回从i 到尾部的子串; 2、append(i, ‘a’) 字符串末尾添加i 个’a’
3、数值转换
int val = 100;
string str = to_string(val);
int val2 = stoi(str, 0, 10);
4、判断大小写
string s = "abCdE";
islower(s[1]);
isupper(s[1]);
s[3] = toupper(s[1]);
tolower(s[1]);
isalpha(int c);
总结
|