deque <t>下标无效。为什么我会收到此错误?</t>

时间:2013-05-08 15:39:04

标签: c++ deque boost-unordered

我在下面的代码中遇到了execption错误。有什么可能导致它的建议吗? Error : Invalid deque <T> subscript

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();
    }
}

更多信息:

上述方法是静态方法。并且该程序是多线程的。由于多个线程访问它,很可能会发生此错误。我有这个假设,但后来认为上面的函数参数一次永远不会相同。

1 个答案:

答案 0 :(得分:0)

您的val参数似乎太高(大于或等于deque中的元素数量),或者可能是负数。