1. 程式人生 > >[C++]對字串向量排序

[C++]對字串向量排序

讓字串向量首先按字串長度進行排序,長度短的在前,長的在後。如果長度相等則按字典序排序,並移除重複的字串。

去重複並按字典序排序:

void elimDumps(vector<string> &words)
{
	// 按字典序排序
	sort(words.begin(), words.end());

	// unique重排輸入範圍,使得每個單詞只出現一次
	// 並排列在範圍的前部,返回指向不重複區域之後一個位置的迭代器
	auto end_unique = unique(words.begin(), words.end());

	// 刪除重複單詞
	words.erase(end_unique, words.end());
}

比較函式,用來按長度排序單詞:
bool isShorter(const string &s1, const string &s2)
{
	return s1.size() < s2.size();
}

主函式:
int _tmain(int argc, _TCHAR* argv[])
{
	// 建立並初始化字串向量
	vector<string> words{ "aaa", "c", "eeee", "b", "cccc", "c" };

	// 移除重複單詞並按字典序排序
	elimDumps(words);

	// 將向量按字串大小排序,使用穩定排序演算法保持相同長度的單詞按字典序排列
	stable_sort(words.begin(), words.end(), isShorter);

	for (auto &s : words)
	{
		cout << s << endl;
	}

	return 0;
}

程式執行結果:


相關推薦

[C++]字串向量排序

讓字串向量首先按字串長度進行排序,長度短的在前,長的在後。如果長度相等則按字典序排序,並移除重複的字串。 去重複並按字典序排序: void elimDumps(vector<string> &words) { // 按字典序排序 sort(words

java 字串進行排序

輸入字串 進行排序 我們需要先將字串變成陣列,然後進行排序 程式碼 private static char[] stringSort(String s) { char [] charNumber = new char[s.length()]; for (int i = 0;

c++vector進行排序,並返回索引值

測試程式碼:(對向量進行排序,取一定範圍內的數值)                 vector<int> vec = {5,31,9,11,8,21,9,7,4};     

C/C++字串常量的處理策略

#include<stdio.h> char *a="Hello"; extern void func(); int main() { char *b="Hello"; ch

C++ 字串處理方式整理

判斷字元是英文還是漢字 /* brief 判斷字元是英文還是漢字 param ch 字元(位元組) return true:是英文;false:是中文 */ static bool isEngli

c++map進行排序

最近在PAT刷題,其中一道題月餅 (25)需要用到對價格進行排序,但是排序後要用到價格對應的總售價。因而可以考慮用關聯容器進行求解,map是比較合適這題的資料結構。         map是用來存

C++和C字串操作總結

一 c語言的字串 c語言中沒有字串這個資料型別,用兩種方法來表示字串,第一種是字元陣列char s[],第二種是字元指標char *s, 兩者有區別,不能任務是一樣的,區別如下(不完整,後期再慢慢補充) 1 初始化和賦值 char[]字串賦值c語言中可以用

sql字串進行排序

tp5寫法: $gold = Db::table('table')->order('CAST(需要排序的欄位 AS UNSIGNED) desc')->limit(10)->select(); 原生寫法: select * from table  OR

Java:通過TreeSet,Comparator實現字串排序

TreeSetTest.java import java.util.Comparator; import java.util.Set; import java.util.TreeSet; public class TreeSetTest { publ

數串: 字串排序C++11標準)

題目描述 設有n個正整數,將他們連線成一排,組成一個最大的多位整數。 如:n=3時,3個整數13,312,343,連成的最大整數為34331213。 如:n=4時,4個整數7,13,4,246連線

C語言 輸入的一個字串進行排序

#include <stdlib.h> #include <stdio.h> #include<string.h> void main() { char s

[C#] List進行分組排序後輸出

pos 學生 new C# src key 輸出 分組 groupby Student 類: public class Student { public int ID { get; set; } public string

C/C++ 字串排序、貼上與轉型

因為程式碼不是在一個檔案中,不方便貼在部落格頁面上,程式碼我已上傳到我的資源中,需要的可以直接下載使用: 資源地址:https://download.csdn.net/download/qq_42292831/10734117 程式碼基於VS2010編寫,在VS2010以下版本無法直接執

C語言中字串的操

最近對於C語言接收到的資料(字串)處理比較多。 字串:零個或多個字元組成的有限序列。假設:S="abcd1234efghmn",其中S是串列埠,字串中的字元可以是字元、數字或其他字元。 #include <string.h> #include <stdio.h>

Mysql中字串型別的欄位進行數字值排序

ORDER BY `meta_value` 那麼按得分排序得到的結果可能是: 1 10 11 123 1234 2 25 253 3      由於是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那麼怎樣才能按照我們預想的數字順序

C語言: 用遞迴實現字串的逆置

#include <stdio.h> #include <windows.h> /* 用遞迴實現對字串的逆置 */ void Reverse(char* string) { int len = strlen(string); if (strlen(string)

字串排序

 對字串進行排序的方法,可以複製直接呼叫; 列如A C B E F D G  輸出為 A B C D E F G public static String Sort(String str) { String value = ""; i

Oracle-Mysql中字串排序

mysql中對字串排序,字串中有數字有漢字,想按數字的大小來進行排序。僅僅用order by排序,效果不是想要的。         sql語句為: select id,dict_name,type_code from t_dictionary  where typ

C#中的字串統計排序之dictionary例項應用

問題: 給出一個字串,字串為26個英文大寫字母,要求統計出每個大寫字母出現的次數並且排序。 解答:這裡我想的是先建立一個int型陣列值都為0,一個char型陣列為26個字母,先遍歷字串,然後套一層for迴圈遍歷是否出現了某個字母,如果有,則對應的int陣列計數自增。最後得

C語言利用快速排序(QuickSort)實現陣列的排序

 快速排序是一種交換排序,是對氣泡排序的改進 利用氣泡排序的特性,對目標進行分段冒泡 #include "stdio.h" int a[6];//定義一個數組,長度為6,實際存放5個元素, /** * 快速排序函式 * @param left 最左邊的指標 * @param