2016-03-26 21 views
0

の値を返します。私は使用しようとしましたポインタは、私が構造体と、このベクトルを満たしています</p> <pre><code>struct IDS{ string name; int age; IDS(string name, int age){ this->name = name; this ->age = age; } } vector<IDS> myVector; </code></pre> <p>例えば構造体のベクトルを持っている、と後で私が特定の値を持つ構造体を発見し、それへのポインタを保存したいベクトルイテレータ

IDS *tmp; 

auto it = find_if (temp->myVector.begin(), temp->myVector.end(), [&](const IDS &y) { 
    return y.age == age; 
}); 

if (it != temp -> myVector.begin()){ 
    tmp =it 
} 

ベクトルがリンクリストの中にあります。 |これは、このエラー

が割り当ての 'IDS *' から '__gnu_cxx :: __ normal_iterator

' を変換することはできませんスロー

どのように私はこのエラーを修正することができ、そしてどのように私は、イテレータのポインタを格納することができますか?

+0

誤解を招く刻み。 :) – erip

答えて

4

itは、ポインタではなくイテレータです。 tmp = &(*it);を使用して、イテレータをポインタに変換できます。

tmpstd::vector<IDS>::iteratorとすることもできます。

+0

どうすればいいですか? – user3706129

+0

@ user3706129 'IDS tmp; tmp = * it; 'それが指し示す' IDS'のコピーを作成します。 – nwp

関連する問題