Как мне уменьшить синтаксические накладные расходы на проверку значений итератора в C ++?

В принципе, я немного устал писать:

std::map<key_t, val_t> the_map;
...
auto iterator = the_map.find(...);
if(iterator != the_map.end()) { // note the "inversed" logic and logically superflous end() call
  ...
}

Что действительно имело смысл, это:

if(auto x=the_map.find(...)) {
  ... // x could either be an iterator or maybe something like boost::optional<val_t>
}

Есть ли какой-нибудь известный уровень техники который определяет некоторую вспомогательную информацию для сокращения синтаксиса ! = container.end () , или я единственный, кого это раздражает?

14
задан Martin Ba 24 October 2011 в 14:38
поделиться