将内容与other的交换。不在单个元素上调用任何移动、复制或交换操作。 所有迭代器和引用保持合法。尾后迭代器被非法化。 若std::allocator_traits<allocator_type>::propagate_on_container_swap::value为 true ,则用非成员swap的非限定调用交换分配器。否则,不交换它们(且若get_allocator()!=other.get_allocator(...
clear()函数:清空vector中的所有元素,使其变为空vector。8. 其他常用操作:push_front()函数:向vector开头添加一个元素(C++11引入)。insert()函数:在指定位置插入一个或多个元素(C++11引入)。erase()函数:删除指定位置的元素或删除一个范围内的元素(C++11引入)。swap()函数:交换两个vector的内容。
首先,vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。 1、释放内存: empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的内存空间依...
首先,vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。 1、释放内存: empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的内存空间依...
不在单独的元素上调用任何移动、复制或交换操作。 所有迭代器和引用仍然有效。end() 迭代器失效。 如果std::allocator_traits<allocator_type>::propagate_on_container_swap::value 是true,那么就会用对非成员 swap 的无限定调用进行分配器的交换。否则,不交换它们(且在 get_allocator() != other.get_allocator...
std::vector<int> vec(5,-1); // 创建了一个包含5个元素且值为-1的vector std::vector<std::string> strVec{"a", "b", "c"}; // 列表初始化 要注意“()”和“{}”这样的初始化情况,比如: std::vector<int> vec(10,1); // 包含10个元素,且值为1 ...
对于vector使用std::swap确实能提高效率。标准库函数std::swap对于vector::swap操作的时间复杂度为常数,这意味着它仅需交换两个vector指向内容的指针,而不涉及逐个元素的交换,避免了O(n)的复杂度。值得一提的是,std::swap除了交换内容,还负责交换分配器,以及一些附属信息,如首元素地址,尾元素地址...
//将a的现有元素个数调整至10个,多则删,少则补,其值为2 a.resize(10,2); //将a的容量扩充至100, a.reserve(100); //b为向量,将a中的元素和b中的元素整体交换 a.swap(b); //b为向量,向量的比较操作还有 != >= > <= < a==b; ...
擦除元素 (公开成员函数) push_back 将元素添加到容器末尾 (公开成员函数) emplace_back (C++11) 在容器末尾就地构造元素 (公开成员函数) pop_back 移除末元素 (公开成员函数) resize 改变容器中可存储元素的个数 (公开成员函数) swap 交换内容 (公开成员函数) 非...
尾元素地址等。swap之后所有的迭代器和引用都是有效的,因为它没有涉及到资源的释放,只是交换指针而已...