Я получаю ошибку выполнения в следующем фрагменте кода. Любые предложения о том, что может вызвать это? Error : Invalid deque <T> subscript
Недопустимый deque <T> индекс. Почему я получаю эту ошибку?
typedef boost::shared_ptr<HistObj> shared_hist_def;
typedef std::deque<shared_hist_def> vector_def;
typedef boost::shared_ptr<vector_def> shared_vector_def;
typedef boost::unordered_map<int,shared_vector_def> in_map_def;
typedef boost::shared_ptr<in_map_def> shared_inner_map_def;
Domain::shared_hist_def& Domain::GetSpecificHistoricalTuple(const std::string& symb,const int& tframe,const int& val)
{
Domain::shared_inner_map_def tshare = stat_History_base[symb];
shared_vector_def tmp = tshare->at(tframe);
try
{
Domain::shared_hist_def safe_tuple = tmp->at(val);
return safe_tuple;
}
catch (std::exception &ex)
{
std::string a = ex.what();
__debugbreak();
}
}
Дополнительная информация:
Описанный выше метод является статическим методом. И программа многопоточна. Любой шанс, что эта ошибка возникает, потому что к ней обращаются несколько потоков. У меня было это предположение, но потом подумайте, что параметры функции выше никогда не могут быть одинаковыми за один раз.
Какая ошибка? – 0x499602D2
только что добавлено в сообщение – MistyD
Я не вижу определения 'stat_History_base', но он не является локальным для функции, поэтому, вероятно, вызовет проблемы с многопоточным. –