2016-12-24 54 views
-1

如何使用迭代器在列表中插入某些內容?例如,我有一個對象列表myobj,其中myobj包含另一個list<int>如何使用迭代器插入std :: list?

class myobj { 
    //other data goes here 
    list<int> l; 
}; 
list <myobj> x; 

假設我要呼籲列表insert()功能的x的第n個元素,我會做這樣的事情

list<myobj>::iterator itr = x.begin(); 
std::advance(itr,n); 
itr->insert(n); //It gives a compilation error. 

我努力學習insert_iterator但大多數的例子我與copy()函數一起使用,但在此我想調用myobj內的列表的insert()函數。

+0

編譯器應該窒息您在列表列表上使用'list '迭代器。 –

+0

使用'std :: advance'來定位迭代器。 – 2016-12-24 17:41:43

回答

0

沒有爲std :: list迭代器定義operator +=()。要提前使用迭代器,請使用std::advance

http://en.cppreference.com/w/cpp/iterator/advance

auto iter = x.begin(); 
std::advance(iter,n); 

請要肯定列表是您要進行迭代足夠大的頭腦。

要訪問的內容:

iter->l.insert(n); 

當使用一個迭代中, ''運算符返回迭代器持有的方法。如果您取消引用迭代器,(*iter).或使用operator ->()您應該可以訪問列表中的對象所擁有的方法。

+0

感謝您的幫助,但這不是我想要做的。 \t 我有一個列表'list = x',我不想插入'x',而是插入''x'的第n個元素所包含的列表中。 – Anon

+0

@Anon在我重新閱讀你的文章之後,看到了。編輯來解決這個問題。 –

+0

明白了。非常感謝:) – Anon

0

要在呼叫是l.insert(iter, value);

進行的插入命名value對象到列表l在該位置指向iter

相關問題