通訊錄同音姓按照漢字排序

2021-09-26 14:02:36 字數 1744 閱讀 8063

中文名通訊錄轉換成拼音排序後發現李、黎 姓的排序夾雜在一起,比如李

三、黎三、李四。下面的排序就是將李姓排在一起,同音姓按照中文漢字來排序,讓其不再混在一起。

#include

#include

#include

#include

#include

static const char trailingbytesforutf8[256] = ; //檢查包含的位元組數

static bool comparefiltername(char c)

return false;

}static std::string trimname(const std::string& name)

//remove_if()將所有應該移除的元素都移動到了容器尾部並返回乙個分界的迭代器.

//移除的所有元素仍然可以通過返回的迭代器訪問到. 為了實際移除元素, 你必須對容器自行呼叫erase()以擦除需要移除的元素

std::string::iterator new_end = std::remove_if(filter_name.begin(),

filter_name.end(), comparefiltername);

filter_name.erase(new_end, filter_name.end());

return filter_name;

}測試的通訊錄資料,包含通訊錄人名以及人名轉換後對應的拼音

struct contact ;

//獲取姓名中的姓

std::string getfirstname(const std::string& name)

//std::cout << "des =" << destination << std::endl;

return destination;

}//獲取姓對應的拼音

std::string getfirstpingyin(const std::string& pinyin)

//std::cout << "des-pin =" << des << std::endl;

return des;

}int main() else

}else

}//while

}

//將當前瀏覽的通訊錄新增到目標陣列中

std::cout << "push cur itor" << "push --name" << itor->name << std::endl;

deslist.push_back(*itor);

}prepin = getfirstpingyin(itor->name_pin);

prename = getfirstname(itor->name);

std::cout << "i = " << i++ << "  prepin =" << prepin << "  prename =" << prename << std::endl;

++itor;

}for(auto it : deslist)

return 1;

}執行結果:

通訊錄排序

這一題用了我之前從沒有嘗試用過的結構體,感覺還不錯。輸入n個朋友的資訊,包括姓名 生日 號碼,本題要求編寫程式,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。輸入格式 輸入第一行給出正整數n 10 隨後n行,每行按照 姓名 生日 號碼 的格式給出一位朋友的資訊,其中 姓名 是長...

通訊錄排序

輸入n個朋友的資訊,包括姓名 生日 號碼,本題要求編寫程式,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。輸入格式 輸入第一行給出正整數n 10 隨後n行,每行按照 姓名 生日 號碼 的格式給出一位朋友的資訊,其中 姓名 是長度不超過10的英文本母組成的字串,生日 是yyyym...

iOS 通訊錄排序

在很多時候需要處理分組資訊 和 資料排序 按時間 字母 排序,類似通訊錄 如下圖 做這個 我的思路是用字典 這裡按字母abcd排序 首先把中文轉換成拼音,擷取第乙個字母 然後插入字典 字母作為key 並根據key對應的value建立為陣列,第二次取出字典中所有的key 判斷新的key是否在所有key...