훨씬 큰 프로그램의 일부로 벡터에있는 모든 동일한 문자열 수의 출력을 얻으려고합니다. 많은 연구가 끝난 후에 나는 함께 작동하는 것을 만들었지 만 그것은 더러워 보입니다. 그리고 더 나은 방법이 있는지 궁금합니다.벡터에서 동일한 문자열을 쉽게 계산할 수 있습니까?
#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