我试图得到一个矢量中所有相同字符串数量的输出作为一个更大的程序的一部分.经过大量的研究,我已经设法将一些有用的东西放在一起但看起来很混乱,我想知道是否有更好的方法来做到这一点.
#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]++;
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作得很好,并给了我以后的输出,但我不是那么热衷于必须添加2个额外的函数才能使它工作或者必须使地图全局化.我们将非常感激地收到任何提示.