これは非常に簡単なことですが、私は理解しようと頭を悩ませてきました。vector<complex <double> >
vecの要素をnumと比較して、complex <double>
numがvecにすでに存在するかどうかを確認しようとしています。含まれている場合、追加されません。equal()とアルゴリズムを使用しようとしましたが、成功しませんでした。誰かがそれを行うための速い方法を知っていますか?
EDIT2:構造体に対して同じ操作を実行する必要があるため、単純化として複素数に対してこれを実行しようとしています。
struct thing{
int i;
int j;
complex <double> pos;
}typedef t_thing;
complex <double> new_num(2.0,2.0);
t_thing will_insert;
will_insert.i = 1;
will_insert.j = 1;
will_insert.pos = new_num;
vector<t_thing> vec_thing;
if(! (find(vec_thing.begin(),vec_thing.end(),will_insert) == vec_thing.end())){
vec_thing.push_back(will_insert);
}else {
cout<<"element already on vec_thing"<<endl;
}
編集3:演算子==をオーバーロードしましたが、findはそれで機能しません:
: error: no matching function for call to ‘find(__gnu_cxx::__normal_iterator<thing*, std::vector<thing, std::allocator<thing> > >, __gnu_cxx::__normal_iterator<thing*, std::vector<thing, std::allocator<thing> > >, t_thing&)’