**vector

    xiaoxiao2021-04-16  226

    // vector::emplace #include <iostream> #include <vector> using namespace std; //构造和插入元素 //通过在位置插入一个新元素来扩展容器。这个新元素是使用args作为构造参数来构造的。 //这有效地将容器大小增加了1。 //当且仅当新向量大小超过当前向量容量时,将自动重新分配分配的存储空间。 //因为向量使用数组作为它们的底层存储, //所以将元素插入到向量末端以外的位置会导致容器将所有在位置之后的元素移动1到它们的新位置。 //与其他类型的序列容器(如list或forward_list)执行的操作相比,这通常是一个低效的操作。 //有关在末尾直接扩展容器的成员函数,请参见emplace_back。 //该元素通过调用allocator_traits::构造并转发args来就地构造。 //存在一个类似的成员函数insert,它复制或将现有对象移动到容器中。 int main () { vector<int> myvector = {10,20,30}; auto it = myvector.emplace ( myvector.begin()+1, 100 ); //10 100 20 30 myvector.emplace ( it, 200 ); //10 200 100 20 30 myvector.emplace ( myvector.end(), 300 ); //10 200 100 20 30 300 cout << "myvector contains:"; for (auto & x: myvector) cout << ' ' << x; cout << '\n'; /* for (auto x= myvector.begin();x!=myvector.end();++x) std::cout << ' ' << *x; std::cout << '\n'; */ return 0; } /* Output: myvector contains: 10 200 100 20 30 300 */

    最新回复(0)