map:
vector:
// 获取vector中某个范围内的元素
vector
array_slice(vector
input_v, int start, int retcount){
vector
list_ret_str;
int len = 0;
for (int index = start; index < input_v.size() && len < retcount; index ++, len ++){
list_ret_str.push_back(input_v[index]);
}
return list_ret_str;
}
// 获取vector< pair
> 中所有key
vector
array_keys(vector
> input_v){
vector
list_ret_str; vector
>::iterator it; for (it = input_v.begin(); it != input_v.end(); it ++){ list_ret_str.push_back(it->first); } return list_ret_str; }
// 合并数组。防重复的合并,如果v2中的值在v1中有了,则舍弃该值不合入v1。
vector
array_merge(vector
v1, vector
v2){
vector
::iterator it;
for (it = v2.begin(); it != v2.end(); it ++){
string str_tmp = *it;
if (find(v1.begin(), v1.end(), str_tmp) != v1.end()){
v1.push_back(str_tmp);
}
}
return v1;
}
string:
// 去除一行字符串两边的多余空格
string& trim(string &s)
{
if (s.empty()){
return s;
}
s.erase(0, s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
return s;
}
// string转为int
int str2int(const string &string_temp)
{
int int_temp;
stringstream stream(string_temp);
stream>>int_temp;
return int_temp;
}
// int转为string
string int2str(const int &int_temp)
{
stringstream stream;
stream<
>string_temp
}
// 用dlim将数组连接起来成为字符串
string join(const string dlim, vector
v)
{
vector
::iterator it;
string tmp = "";
for (it = v.begin(); it != v.end(); it ++){
tmp += *it + dlim;
}
tmp = tmp.substr(0, tmp.size()-1);
return tmp;
}
// 按照cdelim将字符串分割为数组
void split(string& s, string cdelim, vector
* ret)
{
string delim = cdelim;
size_t last = 0;
size_t index = s.find_first_of(delim, last);
while (index != std::string::npos)
{
ret->push_back(s.substr(last, index - last));
last = index + 1;
index = s.find_first_of(delim,last);
}
if(last < s.length()){
ret->push_back(s.substr(last));
}
}
pair:
1、对vector<pair<string, double> >进行排序
struct CmpByValue_desc {
bool operator()(const pair
& lhs, const pair
& rhs)
{return lhs.second > rhs.second;}
};
vector
> toSortMap( map
unsortmap, bool isDesc) { vector< pair
> counts(unsortmap.begin(), unsortmap.end()); // 降序排序 sort(counts.begin(), counts.end(), CmpByValue_desc()); // 如果请求的是升序排序,则倒置原先数组即可 if (!isDesc){ std::reverse(counts.begin(), counts.end()); } return counts; }