目录
Non-member class specializations
Vector模塑出一个动态数组,但C++ standard并未要求必须以动态数组实作vector。
源码声明:
namespace std
{
template <class T, class Allocator = allocator<T>>
class vector;
}
元素要求:
任意型别;可复制;可赋值
容器特点:
支持随机存取;
末段增减元素性能好,前、中端每一次安插或删除元素都需要调用赋值操作符来移动元素
成员函数:
函数列表:
http://www.cplusplus.com/reference/vector/vector/
Member functions
Construct vector (public member function )
Vector destructor (public member function )
Assign content (public member function )
Iterators:
Return iterator to beginning (public member function )
Return iterator to end (public member function )
Return reverse iterator to reverse beginning (public member function )
Return reverse iterator to reverse end (public member function )
cbegin C++11
Return const_iterator to beginning (public member function )
cend C++11
Return const_iterator to end (public member function )
crbegin C++11
Return const_reverse_iterator to reverse beginning (public member function )
crend C++11
Return const_reverse_iterator to reverse end (public member function )
Capacity:
Return size (public member function )
Return maximum size (public member function )
Change size (public member function )
Return size of allocated storage capacity (public member function )
Test whether vector is empty (public member function )
Request a change in capacity (public member function )
shrink_to_fit C++11
Shrink to fit (public member function )
Element access:
Access element (public member function )
Access element (public member function )
Access first element (public member function )
Access last element (public member function )
data C++11
Access data (public member function )
Modifiers:
Assign vector content (public member function )
Add element at the end (public member function )
Delete last element (public member function )
Insert elements (public member function )
Erase elements (public member function )
Swap content (public member function )
Clear content (public member function )
emplace C++11
Construct and insert element (public member function )
emplace_back C++11
Construct and insert element at the end (public member function )
Allocator:
Get allocator (public member function )
Non-member function overloads
Relational operators for vector (function template )
Exchange contents of vectors (function template )
Template specializations
Vector of bool (class template specialization )
Member functions
The specialization has the same member functions as the unspecialized vector, except data, emplace, and emplace_back, that are not present in this specialization.
It adds the following:
Flip bits (public member function )
Swap containers or elements (public member function )
Non-member class specializations
Hash for vector (class template specialization )
特别注意:
reserve, size, max_size, capacity:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v = { 1,2,3 };
v.reserve(10);
cout << "size: " << v.size() << endl
<< "max size: " << v.max_size() << endl
<< "capacity:" << v.capacity() << endl;
return 0;
}
输出:
size: 3
max size: 4611686018427387903
capacity:10
assign:
//range (1)
template <class InputIterator>
void assign (InputIterator first, InputIterator last);
//fill (2)
void assign (size_type n, const value_type& val);
//initializer list (3)
void assign (initializer_list<value_type> il);
//to demonstrate initializer list (3)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v1;
auto v2 = { 1,2,3 };
v1.assign(v2);
return 0;
}
emplace_back, push_back:
emplace_back只调用构造函数;push_back还要调用拷贝构造函数或移动构造函数
at:
唯一进行下标检查的函数