也许我在这里错过了一些要点。但通常你可以简单地使用std::count_if 来计算。
希望我正确理解了你的问题。
这是许多可能的解决方案之一:
#include <map>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
#include <iostream>
struct TestItem
{
int id{ 0 };
} testItemObject;
int main()
{
// Define a multimap with testdata
std::multimap<std::string, TestItem*> testMM{ {"1000000", &testItemObject},
{"2000000", &testItemObject},{"2000001", &testItemObject},
{"3000000", &testItemObject},{"3000001", &testItemObject},{"3000002", &testItemObject},
{"4000000", &testItemObject},{"4000001", &testItemObject},{"4000002", &testItemObject},{"4000003", &testItemObject},
{"5000000", &testItemObject},{"5000001", &testItemObject},{"5000002", &testItemObject},{"5000003", &testItemObject},{"5000004", &testItemObject},
{"6000000", &testItemObject},{"6000001", &testItemObject},{"6000002", &testItemObject},{"6000003", &testItemObject},{"6000004", &testItemObject},{"6000005", &testItemObject},
{"7000000", &testItemObject},{"7000001", &testItemObject},{"7000002", &testItemObject},{"7000003", &testItemObject},{"7000004", &testItemObject},{"7000005", &testItemObject},{"7000006", &testItemObject},
{"8000000", &testItemObject},{"8000001", &testItemObject},{"8000002", &testItemObject},{"8000003", &testItemObject},{"8000004", &testItemObject},{"8000005", &testItemObject},{"8000006", &testItemObject},{"8000007", &testItemObject},
{"9000000", &testItemObject},{"9000001", &testItemObject},{"9000004", &testItemObject},{"9000003", &testItemObject},{"9000004", &testItemObject},{"9000005", &testItemObject},{"9000006", &testItemObject},{"9000007", &testItemObject},{"9000008", &testItemObject},
};
// We want to look for keys starting with
std::vector<char> firstLetterToSearch{ '1', '2', '3', '4', '5', '6', '7', '8', '9' };
// Using std::count_if to count
std::for_each(firstLetterToSearch.begin(), firstLetterToSearch.end(),
[&testMM](const char c) {
std::cout << c << " --> " <<
std::count_if(testMM.begin(), testMM.end(), [&c](std::pair<const std::string, TestItem*> & mm) { return mm.first[0] == c; })
<< "\n";
}
);
return 0;
}