std::deque resize() 方法
- 自 C++11 起
- 直到 C++11
// (1) Non const version only
void resize( size_type count );
// (2) Non const version only
void resize( size_type count, const value_type& value );
// (1) Non const version only
void resize( size_type count );
// (2) Non const version only
void resize( size_type count, T value = T() );
将容器的大小调整为包含 count
个元素。
如果当前大小大于 count
,则容器将缩小到其前 count
个元素。
如果当前大小小于 count
- (1) 会追加额外的默认插入元素。
- (2) 会追加额外的
value
副本。
参数
count
- 容器的新大小value
- 用于初始化新元素的值
类型要求
T
在此列表中。
- (1) -
T
(容器的元素类型)必须满足MoveInsertable
和DefaultInsertable
的要求 - (2) -
T
(容器的元素类型)必须满足CopyInsertable
的要求
返回值
(无)
复杂度
与当前大小和 count
之间的差值呈线性关系 - O(size() - count)。
异常
(无)
备注
如果重载 (1) 中的值初始化是不希望的,例如,如果元素是非类类型且不需要清零,则可以通过提供自定义的 Allocator::construct()
来避免。
示例
Main.cpp
#include <iostream>
#include <deque>
int main()
{
std::deque<int> c = {1, 2, 3};
std::cout << "The deque holds: ";
for (const auto& el: c) std::cout << el << ' ';
std::cout << '\n';
c.resize(5);
std::cout << "After resize up to 5: ";
for (const auto& el: c) std::cout << el << ' ';
std::cout << '\n';
c.resize(2);
std::cout << "After resize down to 2: ";
for (const auto& el: c) std::cout << el << ' ';
std::cout << '\n';
c.resize(6, 4);
std::cout << "After resize up to 6 (initializer = 4): ";
for (const auto& el: c) std::cout << el << ' ';
std::cout << '\n';
}
输出
The deque holds: 1 2 3
After resize up to 5: 1 2 3 0 0
After resize down to 2: 1 2
After resize up to 6 (initializer = 4): 1 2 4 4 4 4