下面以两种不同类型的 std::vector 为例:
std::vector<std::reference_wrapper<MyClass>> rv;
std::vector<MyClass> v;
在它们之间进行分配的一种可能方法是:
for (const auto& mc : rv) {
v.push_back(mc.get());
}
有用。但丑陋,也许很慢。与比较相同:
bool is_same(std::vector<MyClass>& v, std::vector<std::reference_wrapper<MyClass>>& rv) {
if (v.size()!=rv.size()) {
return false;
}
for (size_t i = 0; i < v.size(); v++) {
if (v[i]!=rv[i].get()) {
return false;
}
}
return true;
}
有没有更好的方法来完成这项工作?聪明又快速。