能够访问逐项列表的最佳结构。

时间:2017-05-28 03:56:55

标签: c++

我需要能够一次填充列表,然后快速返回项目的索引。例如,如果我在列表中有10个人,我需要能够查找该人并在列表中返回他们的号码(1-10)。我想到了几种不同的方法,但到目前为止还没有任何方法。我有一个填充了我的数据的向量现在我只需要能够到达索引。虽然如果有人有更好的想法我不愿意倾听,我不会设置矢量。 感谢。

1 个答案:

答案 0 :(得分:0)

欢迎使用Stackoverflow。

对于一个小的列表,它并不重要。通常,虽然您将从有序集合中获得更好的查找时间。我建议std::set。如果这在您的方案中不起作用(例如,您想自己确定订单),那么std::map可能会更好。

编辑*

正如你在评论中澄清的那样,你想要的只是一个向量的索引,那么我会做这样的事情。

int main() {
    vector<string> v;
    vector<string>::iterator it;

    v.push_back("a");
    v.push_back("b");
    v.push_back("c");
    v.push_back("d");

    it=find(v.begin(),v.end(),"c");

    if(it!=v.end()){
        int index = distance(v.begin(), it);
        cout<<"found "<<index<<endl;
    }
    else{
        cout<<"not found"<<endl;
    }
    return 0;
}

很抱歉,如果我的格式很奇怪,我不是一个真正的cpp程序员