使用move语义将元素推入两个容器

时间:2016-11-05 21:42:08

标签: c++ c++11 move-semantics

我最近读过关于移动语义和右值参考的文章。

有一个类有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?   
}

我理解所有对概念的解释,以防我误解移动语义。

0 个答案:

没有答案