私は次のコードの多くの例があります:どのように私はそれがfoo2は、新しいベクトルを埋めるのコードを向上させることができます異なるタイプのイテレータでベクトルをどのように埋めることができますか?
struct foo1
{
foo1(int ii = 0, int jj = 0)
{
this->ii = ii;
this->jj = jj;
}
int ii;
int jj;
};
struct foo2
{
foo2()
{
}
foo2(const foo1& f)
{
this->f = f;
}
foo1 f;
};
typedef std::vector<foo2> foo_v;
typedef std::set<int> bar_s;
bar_s barSet;
barSet.insert(1); barSet.insert(2); barSet.insert(3);
barSet.insert(4); barSet.insert(5); barSet.insert(6);
...
foo_v fooVec;
for (bar_s::iterator b = barSet.begin(); b != barSet.end(); ++b)
fooVec.push_back(foo2(*b));
を?
私はの線に沿って何かを考えていた:
std::remove_copy_if(barSet.begin(), barSet.end(),
std::back_inserter(fooVec), ...)
を私はfoo2
構造体の新しいインスタンスにint
タイプをバインドする方法を見つけるのに苦労しています。
注:
エラー1つのエラーC2679:バイナリ '=':
std::copy(barSet.begin(), barSet.end(), std::back_inserter(fooVec));
は私に次のエラーを与える何のオペレータが」タイプの右辺のオペランドをとる見つかりませんint "(または許容される変換はありません)
'bar_s'のイテレータを参照解除すると、' int'が返されます。さて、 'int'はすでに' foo'に変換できるので、 'bar_s'のイテレータの背後にある値を' foo_v'に挿入できるはずです – Mephane