C++ 向量';让我们回到原地
你能解释一下“完美转发”是如何工作的吗 我读到向量的emplace_back不需要复制或移动对象,因为它的参数是作为可变模板实现的C++ 向量';让我们回到原地,c++,stl,c++11,C++,Stl,C++11,你能解释一下“完美转发”是如何工作的吗 我读到向量的emplace_back不需要复制或移动对象,因为它的参数是作为可变模板实现的 std::vector<T>::emplace_back(_Args&&... __args) std::vector::emplace_back(_Args&&…_Args) 你能更详细地描述一下吗?为什么它既不复制也不移动?将元素放回原处直接在向量中的正确位置构造元素。想象一下 vector<T> v; v.empla
std::vector<T>::emplace_back(_Args&&... __args)
std::vector::emplace_back(_Args&&…_Args)
你能更详细地描述一下吗?为什么它既不复制也不移动?将元素放回原处直接在向量中的正确位置构造元素。想象一下
vector<T> v;
v.emplace_back(a,b,c);
(事实上,将参数转发为
std::forward()…
要复杂一点,但要获得emplace操作的密钥可能会更混乱)在emplace\u back中实际上发生了两件事:
实际上,
std::vector
的emplace\u back
确实需要移动对象以避免不必要的idx
。
new (v.data()+idx) T(a,b,c);