这是我出来的可能的方式之一: struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n")); 当然,我们也可以通过定义另一个函子RetrieveValues来从地图中检索所有的值。 有没有其他方法可以轻松实现? (我总是想知道为什么std :: map不包括我们这样做的成员函数。)
我想弄清楚为什么下面的代码不工作,我假设这是使用char *作为键types的问题,但我不知道如何解决它或为什么发生。 我使用的所有其他函数(在HL2 SDK中)都使用char*所以使用std::string会导致很多不必要的复杂性。 std::map<char*, int> g_PlayerNames; int PlayerManager::CreateFakePlayer() { FakePlayer *player = new FakePlayer(); int index = g_FakePlayers.AddToTail(player); bool foundName = false; // Iterate through Player Names and find an Unused one for(std::map<char*,int>::iterator it = g_PlayerNames.begin(); it != g_PlayerNames.end(); ++it) { if(it->second == NAME_AVAILABLE) { // We found an Available Name. Mark as Unavailable […]
什么是初始化静态地图的正确方法? 我们需要一个静态函数来初始化它吗?