C++ map.find鑳藉惁杩斿洖澶氫釜缁撴灉
C++涓殑`std::map::find`鏂规硶鍙兘杩斿洖涓€涓粨鏋溿€傚畠鐢ㄤ簬鏌ユ壘涓庣粰瀹氶敭鍏宠仈鐨勭涓€涓厓绱犮€傚鏋滄壘鍒板尮閰嶇殑鍏冪礌锛宍find`鏂规硶灏嗚繑鍥炰竴涓寚鍚戣鍏冪礌鐨勮凯浠e櫒锛涘鏋滄病鏈夋壘鍒板尮閰嶇殑鍏冪礌锛屽畠灏嗚繑鍥炰竴涓寚鍚慲map`鐨刞end()`杩唬鍣ㄣ€?/p>
濡傛灉浣犻渶瑕佽繑鍥炲涓粨鏋滐紙鍗冲湪`map`涓壘鍒版墍鏈夊叿鏈夌浉鍚岄敭鐨勫厓绱狅級锛屼綘鍙互浣跨敤浠ヤ笅鏇夸唬鏂规硶锛?/p>
1銆佷娇鐢ㄨ寖鍥磃or寰幆閬嶅巻`map`锛屽苟妫€鏌ユ瘡涓厓绱犵殑閿槸鍚︿笌鎵€闇€鐨勯敭鍖归厤銆傝繖绉嶆柟娉曞湪鏁堢巼涓婂彲鑳戒笉鏄渶浼樼殑锛屽洜涓哄畠浼氶亶鍘嗘暣涓猔map`锛岃€屼笉浠呬粎鏄湁鍖归厤閿殑閮ㄥ垎銆?/p>
```cpp
#include
#include
#include
int main() {
std::map
int key_to_find = 2;
std::vector
for (const auto& pair : my_map) {
if (pair.first == key_to_find) {
results.push_back(pair.second);
}
}
for (const auto& result : results) {
std::cout<< result<< std::endl;
}
return 0;
}
```
2銆佺敱浜巂std::map`涓殑閿槸鍞竴鐨勶紝鍥犳鎷ユ湁澶氫釜鍏锋湁鐩稿悓閿殑鍏冪礌鎰忓懗鐫€杩欎簺鍏冪礌鍦ㄩ€昏緫涓婃槸绛変环鐨勩€傚湪杩欑鎯呭喌涓嬶紝浣犲彲鑳介渶瑕侀噸鏂拌€冭檻鏁版嵁缁撴瀯鐨勯€夋嫨銆備緥濡傦紝浣犲彲浠ヤ娇鐢╜std::multimap`鎴朻std::unordered_multimap`锛屽畠浠厑璁稿叿鏈夌浉鍚岄敭鐨勫涓厓绱犮€傜劧鍚庯紝浣犲彲浠ヤ娇鐢╜equal_range`鏂规硶鏉ユ壘鍒板叿鏈夌壒瀹氶敭鐨勬墍鏈夊厓绱犮€?/p>
```cpp
#include
#include
#include
int main() {
std::multimap
int key_to_find = 2;
std::vector
auto range = my_map.equal_range(key_to_find);
for (auto it = range.first; it != range.second; ++it) {
results.push_back(it->second);
}
for (const auto& result : results) {
std::cout<< result<< std::endl;
}
return 0;
}
```
璇锋敞鎰忥紝`std::unordered_multimap`鐨勮涓轰笌`std::multimap`绫讳技锛屼絾鍦ㄦ彃鍏ュ拰鏌ユ壘鍏冪礌鏃朵笉淇濊瘉椤哄簭銆?/p>