To jeden z możliwych sposobów, w jaki wychodzę: 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")); Oczywiście możemy również pobrać wszystkie …
Jakiś czas temu rozmawiałem z kolegą o tym, jak wstawiać wartości do map STL . Wolałem, map[key] = value; ponieważ wydaje się to naturalne i czytelne, podczas gdy on wolał map.insert(std::make_pair(key, value)) Właśnie go zapytałem i żadne z nas nie pamięta, dlaczego wkładka jest lepsza, ale jestem pewien, że nie …
Zidentyfikowałem cztery różne sposoby wstawiania elementów do std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); Który z nich jest preferowany / idiomatyczny? (Czy jest inny sposób, o którym nie pomyślałem?)
Zakładając mapę, na której chcesz zachować istniejące wpisy. W 20% przypadków wpis, który wstawiasz, to nowe dane. Czy jest korzyść z robienia std :: map :: find then std :: map :: insert przy użyciu tego zwróconego iteratora? A może szybciej jest próba wstawienia, a następnie działanie w oparciu o …
Jak zaktualizować wartość klucza std::mappo użyciu findmetody? Mam mapę i deklarację iteratora taką jak ta: map <char, int> m1; map <char, int>::iterator m1_it; typedef pair <char, int> count_pair; Używam mapy do przechowywania liczby wystąpień znaku. Używam Visual C ++ 2010.
typedef map<string, string> myMap; Podczas wstawiania nowej pary do myMap, użyje klucza stringdo porównania przez własny komparator ciągów. Czy można zastąpić ten komparator? Na przykład chciałbym porównać klucz na stringpodstawie jego długości, a nie alfabetu. Czy jest jakiś inny sposób sortowania mapy?
Próbuję dowiedzieć się, dlaczego poniższy kod nie działa i przypuszczam, że jest to problem z użyciem znaku * jako typu klucza, jednak nie jestem pewien, jak mogę go rozwiązać i dlaczego tak się dzieje. Wszystkie inne funkcje, których używam (w HL2 SDK) używam, char*więc użycie std::stringspowoduje wiele niepotrzebnych komplikacji. std::map<char*, …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.