我在下面的一段代碼中遇到了錯誤處理錯誤。有什麼可能導致它的建議嗎? 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 2013-05-08 15:40:31
剛剛添加到帖子 – MistyD 2013-05-08 15:42:19
我沒有看到'stat_History_base'的定義,但它不是本地的函數,所以可能會導致多線程的問題。 – 2013-05-08 15:44:44