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;
}