Объясните пожалуйста почему так происходит: Выдирая из кода -
class my_class { private: ... std::multimap<time_t, unsigned int> _timestamps; }; .... void my_class::some_method() { ... this->_timestamps.insert(/*--_timestamps.end(),*/ std::pair<time_t, unsigned int>(current_time, key_hash)); ... }
Если расскоментировать "--_timestamps.end()" происходит Segmentation fault в этом месте, так всё работает как надо(кроме эффективности)
Однако такой код:
multimap<int, int> m; m.insert(pair<int,int>(5,2));
cout << "(--m.end())->first - " << (--m.end())->first << endl;
Работает как я и ожидаю(выводит 5)
Что не так? Насколько я понимаю multimap::end() возвращает BIdirectional iterator, который "легально" можно декрементировать... Или это не так?
С уважением, Rilium aka Климентов Константин