我目前正在學習加速C++(Koenig/Moo)這本書,並且遇到了其中一個練習題。問題在於編寫一個程序,該程序將輸入的一系列單詞作爲輸入,然後將其存儲在地圖中。字符串是輸入的單詞,關聯的int是每個單詞出現的次數。然後,您必須按照它們出現的次數對單詞進行排序;也就是說,是由價值而不是關鍵。您無法通過值對地圖進行排序,因此我試圖將元素複製到矢量中,而不是使用謂詞進行排序。不幸的是,我所得到的只是一個充滿g ++錯誤的屏幕。他們似乎是從同一個地方幹 - 把我的地圖元素融入我的載體,我試着這樣做:C++:通過迭代器將地圖<string, int> push_back成一個vector <map <string, int>>?
int main()
{
map<string, int> counters;
cout << "Enter some words followed by end-of-file (ctrl-d): ";
string word;
while (cin >> word)
++counters[word];
//maps cannot be sorted by values, so pass the elements of counters to a vector
vector<map<string, int> > vec_counters;
map<string, int>::const_iterator it = counters.begin();
while (it != counters.end()) {
vec_counters.push_back(*it);
++it;
}
顯然這只是第一部分,但我不能讓這個連編譯。我得到錯誤:
32:31:錯誤:沒有匹配函數調用std :: vector,int>> :: push_back(const std :: pair,int> &)' /usr/include/C++/4.5/bits/stl_vector.h:741:7:note:candidate is:void std :: vector < _Tp,_Alloc> :: push_back(const value_type &)[with _Tp = std :: map,int>,_Alloc = std :: allocator,int>>,value_type = std :: map,int>]
我想我正在做一些根本上愚蠢的事情......但我不能爲我的生活看到什麼..
任何幫助將是偉大的!
Ç
這聽起來像是Boost.Bimap的工作! –