map中元素輸出為什麼是按字母排序?

時間 2021-05-31 04:46:28

1樓:Tom Chu

#include

#include

#include

#include

#include

using

namespace

std;

intmain

()if

(operation

=="vote"

)else

++invalid;}

if(operation

=="getVoteResult"

)cout

<<"invalie: "

<

<

;break;}

}return0;

}多用乙個map來存輸入的順序不就好了嘛

2樓:CHAN.K

我也是直接用map寫的,一開始還以為對的,後來才看清楚原來這題目是要按照自己的順序輸出

#include

#include

#include

#include

using namespace std;

int main()

cin>>n;

stringss;

for(i=

0;i

++i)}

}for

(vector

>::

iterator

it2=

vec.

begin

();it2

!=vec

.end

();it2++)

}}intsum=0

;for

(map

,int

>::

iteratorit=

can.

begin

();it

!=can

.end

();it++)

cout

<<"Invalid : "

<

sum<<

endl;}

return0;}

3樓:

stl的map是用一顆二叉排序樹儲存元素的,排序準則取決於key的元素型別,string的預設準則就是字母順序。用迭代器遍歷map時,按照排序樹的順序訪問元素,所以輸出是字母順序

你可以另外用乙個vector按順序儲存候選人,或者將map的key型別替換成自定義的帶輸入序號和候選人名字的結構,再通過map的第三個模板引數傳入自定義的針對這個結構的排序準則

4樓:陳碩

為什麼你認為map不是按字母排序?

你認為它應該按什麼排序?為什麼?

要解決也很簡單,再用個vector of string儲存你要的輸出順序。

為什麼字母表按 abc 的順序?

sapereaude 因為英文本母表上的字母順序,是承襲拉丁字母順序而來。而拉丁字母順序,是承襲它所借用的埃特魯斯坎 Etruscan 字母的順序而來。古埃特魯斯坎人所使用的那套字母,則是從西元前八世紀開始在義大利半島 西南部建立殖民地的希臘埃維亞人 Euboeans 所使用的希臘字母借來。古埃特魯...

英語字母為什麼是 26 個?

ImBatman2 這就要從資訊熵說起.無論任何語言,最常用的單詞都是2000到20000左右,符號文字的單詞由字母組合組成,CJK文字由偏旁部首組成.如果字母的個數太少的話,比如只有兩個0和1,那麼乙個單詞就會由很長的重複字母組成,比如把英文單詞轉換成ASCII碼的話,那幾乎沒有任何可讀性.對於記...

為什麼英文是由字母組成的?

StartZeyi 腓尼基字母是當今所有字母的祖先。腓尼基人是希臘人對迦南人的稱呼,約西元前2800年 西元前1200年,腓尼基人在埃及的統治之下,深受埃及文化的影響,後來埃及由於戰爭等因素衰弱了,腓尼基人靠著航海和商貿逐漸興起 壯大,發展了原始的迦南字母,這個字母起就是源於古埃及的只有子音用聲旁表...