我想从foo转变为bar。
struct A
{
explicit A(int d): m_d(d) {};
private:
int m_d;
};
A some_function (int i) { return A(2*i); }
std::vector<int> foo;
std::vector<A> bar; // This is part of a Library not under my control
界面仅提供pbar
std::vector<A>* pbar =&bar; // This is the interface to the part of a Library not under my control
取消引用pbar是否合法并将其用作back_inserter的参数?为什么?
std::transform (foo.begin(), foo.end(), std::back_inserter(*pbar), some_function);
这里有一个完整的例子:http://coliru.stacked-crooked.com/a/2aec8d000cabf78b
答案 0 :(得分:1)
是的,完全没有问题。我不确定你的困惑是什么来源,所以我不确定如何回答&#34;为什么。&#34;如果您有一个指向对象的非const
指针,则可以取消引用它并将其传递给需要非const
引用的函数(如std::back_inserter
)。