2013-05-25 35 views
0

relocate()在boost多指標容器中的含義是什麼?boost重定位功能,效果如何?

我已經閱讀從升壓單證手動,但我希望看到一個簡單的例子,使用和不使用的重定位功能看的差異。在網絡上的例子並不雖然簡單....

回答

1

它只是重新定位序列索引(移動)項目(S):

#include <boost/multi_index_container.hpp> 
#include <boost/multi_index/sequenced_index.hpp> 
#include <iostream> 

using namespace boost::multi_index; 

typedef multi_index_container< 
    int, 
    indexed_by<sequenced<> > 
> Ints; 


int main() 
{ 
    Ints ints; 
    ints.insert(ints.end(), 1); 
    ints.insert(ints.end(), 2); 
    ints.insert(ints.end(), 3); 
    ints.insert(ints.end(), 4); 
    std::for_each (ints.begin(), ints.end(), [&](int i) { std::cout << i << std::endl; }); // 1, 2, 3, 4 

    auto i = find(ints.begin(), ints.end(), 2); 
    ints.relocate(ints.end(), i); 
    std::for_each (ints.begin(), ints.end(), [&](int i) { std::cout << i << std::endl; }); // 1, 3, 4, 2 
}