std::map 指定した範囲の要素が存在するか
慣れないC++を使って。
#include <map> #include <iostream> int main( void ) { std::map<int,int> m; m[83] = 22; m[35] = 76; m[11] = 9; m[75] = 39; m[62] = 98; m[85] = 86; m[8] = 80; m[18] = 7; m[48] = 84; m[31] = 2; for( int i = 0; i < 100; i += 10 ) { int next = i + 10; bool is_exist; std::cout << i << "以上" << next << "未満のキーは"; std::map<int,int>::iterator it = m.lower_bound( i ); is_exist = it != m.end() && it->first < next; std::cout << ( is_exist ? "存在します" : "存在しません" ) << std::endl; } return 0; }
二分探索木による連想配列はこういうことも出来るのが利点じゃないかなあ。
m.end()っていうのは最後の要素というより最後の要素のさらに次の番兵みたいなものなんだね。で、イテレータを返すメンバで「そんなの存在しない」ってときにm.end()を返すと。
C++ ちゃんと勉強しなきゃなあ。