作为更大程序的一部分,我正在尝试获取向量中所有相同字符串的数量的输出。经过大量研究,我设法将一些可行的东西放在一起,但看起来很混乱,我想知道是否有更好的方法来做到这一点。
#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 个额外的函数以使其工作或必须使地图成为全局。任何提示将不胜感激。