vector::resize
指定向量的新大小 (指定單位為項目數)。
void resize( size_type Newsize ); void resize( size_type Newsize, Type Val );
參數
Newsize
向量的新大小。Val
如果新的大小大於原始大小,則已將新元素的初始化值加入至向量。 如果省略此值,則新的物件會使用其預設建構函式。
備註
如果容器的大小小於所要求的大小 (Newsize),則除非達到所要求的大小,否則會將元素加入至向量。 如果容器的大小大於所要求的大小,則除非容器達到大小 Newsize,否則會刪除最接近容器結尾的元素。 如果容器現在的大小與所要求的大小相同,則不會採取任何動作。
size 會反映向量的目前大小。
範例
// vectorsizing.cpp
// compile with: /EHsc /W4
// Illustrates vector::reserve, vector::max_size,
// vector::resize, vector::resize, and vector::capacity.
//
// Functions:
//
// vector::max_size - Returns maximum number of elements vector could
// hold.
//
// vector::capacity - Returns number of elements for which memory has
// been allocated.
//
// vector::size - Returns number of elements in the vector.
//
// vector::resize - Reallocates memory for vector, preserves its
// contents if new size is larger than existing size.
//
// vector::reserve - Allocates elements for vector to ensure a minimum
// size, preserving its contents if the new size is
// larger than existing size.
//
// vector::push_back - Appends (inserts) an element to the end of a
// vector, allocating memory for it if necessary.
//
//////////////////////////////////////////////////////////////////////
// The debugger cannot handle symbols more than 255 characters long.
// STL often creates symbols longer than that.
// The warning can be disabled:
//#pragma warning(disable:4786)
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template <typename C> void print(const string& s, const C& c) {
cout << s;
for (const auto& e : c) {
cout << e << " ";
}
cout << endl;
}
void printvstats(const vector<int>& v) {
cout << " the vector's size is: " << v.size() << endl;
cout << " the vector's capacity is: " << v.capacity() << endl;
cout << " the vector's maximum size is: " << v.max_size() << endl;
}
int main()
{
// declare a vector that begins with 0 elements.
vector<int> v;
// Show statistics about vector.
cout << endl << "After declaring an empty vector:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
// Add one element to the end of the vector.
v.push_back(-1);
cout << endl << "After adding an element:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
for (int i = 1; i < 10; ++i) {
v.push_back(i);
}
cout << endl << "After adding 10 elements:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
v.resize(6);
cout << endl << "After resizing to 6 elements without an initialization value:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
v.resize(9, 999);
cout << endl << "After resizing to 9 elements with an initialization value of 999:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
v.resize(12);
cout << endl << "After resizing to 12 elements without an initialization value:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
// Ensure there's room for at least 1000 elements.
v.reserve(1000);
cout << endl << "After vector::reserve(1000):" << endl;
printvstats(v);
// Ensure there's room for at least 2000 elements.
v.resize(2000);
cout << endl << "After vector::resize(2000):" << endl;
printvstats(v);
}
輸出
After declaring an empty vector:
the vector's size is: 0
the vector's capacity is: 0
the vector's maximum size is: 1073741823
the vector's contents:
After adding an element:
the vector's size is: 1
the vector's capacity is: 1
the vector's maximum size is: 1073741823
the vector's contents: -1
After adding 10 elements:
the vector's size is: 10
the vector's capacity is: 13
the vector's maximum size is: 1073741823
the vector's contents: -1 1 2 3 4 5 6 7 8 9
After resizing to 6 elements without an initialization value:
the vector's size is: 6
the vector's capacity is: 13
the vector's maximum size is: 1073741823
the vector's contents: -1 1 2 3 4 5
After resizing to 9 elements with an initialization value of 999:
the vector's size is: 9
the vector's capacity is: 13
the vector's maximum size is: 1073741823
the vector's contents: -1 1 2 3 4 5 999 999 999
After resizing to 12 elements without an initialization value:
the vector's size is: 12
the vector's capacity is: 13
the vector's maximum size is: 1073741823
the vector's contents: -1 1 2 3 4 5 999 999 999 0 0 0
After vector::reserve(1000):
the vector's size is: 12
the vector's capacity is: 1000
the vector's maximum size is: 1073741823
After vector::resize(2000):
the vector's size is: 2000
the vector's capacity is: 2000
the vector's maximum size is: 1073741823
需求
標頭:<vector>
命名空間: std