STL中最简单也是最有用的容器之一是vector<T>类模板,称为向量容器,是序列类型容器中的一种. 1.vector<T> 对象的基本用法(1)声明:vector<type>  v;    //容量为0构造v对象,指定元素类型为typevector<type>  v(n);    //元素为n构造v对象,指定元素类型为type, vector<type>  v(n, initValue);    //元素为n构造v对象,指定元素类型为type,…
本文参考了侯捷的 <STL 源码分析>一书,出于兴趣,自行实现了简单的 vector 容器. 之后会陆续上传 list, deque 等容器的代码,若有错误,欢迎留言指出. vector 容易实现的几点注意事项: 1. 由于vector 是动态数组. 出于效率的考虑,在往vector 中加入元素时,内存的扩展遵循的规则是: 1> 如果当前可用内存不够,开 2倍大的内存,将原来的数组复制到新数组中,撤销原来的数组. 2> 加入新的元素 2. 通常当我们 int *p = new in…
1.这个容器的知识点比较杂 迭代器的理解: 1.erase()函数的返回值,它的迭代器在循环遍历中的奇特之处: #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> #include <list> #include <algorithm> #include <numeric> #include <functional> using namespace…
1. 序: 本文参考了侯捷的 <STL 源码分析>一书,出于兴趣,自行实现了简单的 list 容器. 学习了 STL 的 list 容器的源代码,确实能够提高写链表代码的能力.其中的 sort 函数,可谓是非常神奇... 2. 实现的细节 STL 的 list 容器采用了一个带有尾节点的环状双向链表. 如下图所示: // Last Update:2014-04-20 18:39:47 /** * @file my_list.h * @brief a simple list * @author…
1. clear() 将整个 vector 都删除 使用 vectorname.clear() 可以将整个vector 中的元素全部删除,但是内存不会释放,如下代码: 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 vector<int>num(5, 111); 9 cout << "=== 使用 clear() 删除前=…
vector 容器下的 insert() 方法拥有返回值,由于insert() 方法拥有4种重载函数,他的返回值不尽相同. 第一种,插入单个元素后的返回值: 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444 }; 9 vector<int>num(test, test + 4); 10…
vector 容器可以使用 vectorName.insert() 方法插入元素,vectorName.insert() 函数一共有4种重载方法: 第一种 insert() 用法:在指定地址插入单个元素 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444 }; 9 vector<int>…
1. 获取容器的元素个数 size() 使用 vectorName.size() 可以输出这个容器中类型的个数,如下代码: 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 vector<int>num(3, 111); 9 cout << "num 的元素个数:" << num.size() <…
1. 通过 push_back() 尾部增加一个元素 : vector 可以通过 "push_back " 写入数据,通过 push_back 可以将数据直接写入至 vector 的末尾,push_back 会自动申请内存,并且多次 push_back 后会自动预先分配内存,如下代码: 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 /…
vector 的几种带参构造 & 初始化与内存分配: 1. 普通的带参构造: vector 的相关对象可以在声明时通过 vector 的带参构造函数进行内存分配,如下: 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 //vector 带参构造,分配10个int空间的内存 9 vector<int>num(10); 10 11 cout…