我最近读过关于移动语义和右值参考的文章。
有一个类有2个指向struct的指针容器。 e.g
struct Person{
Person(int i , int a){
id = i;
age = a
}
Person(Person && p){
id = p.id;
age = p.id;
}
int id;
int age;
}
class Holder{
private:
vector<Person*> one;
vector<Person*> two;
}
两个容器都应该接收相同的Person,但是,一个应按年龄分类,另一个应按id分类。我可以做类似
的事情void Person::Insert( int age , int id ){
Person* tmp = new Person(age , id );
one.push_back(tmp);
// sort somehow one .. isnt important for this example
two.push_back(tmp);
// same sort
}
但是可以使用r值引用和移动语义来改进吗?它实际上会使步骤更快/更好的内存成本吗?首先,这样做有意义吗? e.g
void Person::Insert(Person*&& p){
one.push_back(p);
// sort
two.push_back(p);
// sort?
}
我理解所有对概念的解释,以防我误解移动语义。