这篇文章整理了vector.
Empirical Observation
1. make_move_iterator and push_back
std::vector::insert
with std::make_move_iterator
is generally faster than push_back
in a loop theoretically. But it’s not. </br>
I need to copy varible A(std::vector<pcl::Point>
) to another varible B. I find that make_move_iterator
is a little slower than push_back
. Length of A is about 20000.
In general, emplace_back
is preferred if the type stored in the container is expensive to move or copy
2. reserve
When copy or push large data to vector, reallocation will take much time. Using reserve
to allocate sufficient capacity can reduce time cost significantly.
#include <vector>
member
1. erase
删除容器中的元素
erase(pos,n); // 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
erase(position); // 删除position处的一个字符(position是个string类型的迭代器)
erase(first,last);// 删除从first到last之间的字符(first和last都是迭代器)
2. iterator
#include <iterator>
// genarate a iterator for container c and this iterator will add element to c. c must support push_back
back_inserter(c);
// genarate a iterator for container c and this iterator will add element to c. c must support push_front
front_inserter(c);
// genarate a iterator for container c and add elemnet before it
inserter(c,it);
3 initailize vector
here.
4 reserve
When a std::vector
is empty, calling std::vector::reserve
is a constant-time operation, O(1).