2017-05-28 14 views
-3

我需要能夠一次填充列表,然後快速返回項目的索引。例如,如果我在列表中有10個人,我需要能夠查找此人並在列表中返回他們的編號(1-10)。我想了幾種不同的方法,但迄今爲止都沒有工作。我有一個向量填充了我的數據,現在我只需要能夠進入索引。我沒有設置矢量,但如果任何人有更好的主意,我更願意傾聽。 謝謝。能夠訪問分項列表的最佳結構。

+0

歡迎堆棧溢出。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –

回答

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程序員

+0

我想我問的是如何返回索引號?這是我真正需要的。對不起,我不清楚。我是新來的,無法弄清楚如何到達索引值。這看起來很簡單,但我不知道爲什麼這給了我這麼難的時間。我一直堅持數小時。是否有辦法在矢量中查找某些內容並獲取其索引?或將地圖或設置更好,我應該重新開始?再次感謝。 – stranger

+0

如果這個列表是有序的,你可以比一個線性搜索更快地執行一個'std :: vector'的二進制搜索。 – Davislor