我想獲得一個向量中的所有相同字符串的數量輸出作爲一個更大的程序的一部分。經過大量研究後,我設法將一些東西放在一起,但似乎很雜亂,我想知道是否有更好的方法來做到這一點。更容易的方法來計算矢量中的相同字符串?
#include <vector>
#include <string>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
void setMap(string i);
void addMap(string i);
map<string, int> myMap;
int main()
{
vector<string> myVector;
string myArray[6]={"foo","foo","bar","roo","foo","bar"};
for (int i=0; i<6; i++)
{
myVector.push_back(myArray[i]);
}
for_each (myVector.begin(), myVector.end(), setMap);
for_each (myVector.begin(), myVector.end(), addMap);
for (map<string, int, less<string>>::const_iterator iter = myMap.begin();
iter != myMap.end(); ++iter)
cout <<iter->first<<'\t'<<iter->second<<endl;
return 0;
}
void setMap(string i)
{
myMap[i]=0;
}
void addMap(string i)
{
myMap[i]++;
}
此代碼工作正常,給我輸出我之後,但我不是不必增加2個額外的功能,使工作或不得不作出的全球地圖是敏銳的。任何提示都會受到感謝。
C++ 03或C++ 11? – leemes
如果你想使用'for_each',你可以使用* functor *來設計你的地圖引用,從而消除你的代碼塊。 [看到它](http://ideone.com/ZbMU8r)。使用* lambda *可以使*更緊湊。 [也看到它](http://ideone.com/H59HHM)。 – WhozCraig