vector入门

vector数组是标准名字空间(std::)的一部分,当我们需要存储动态数据时(如:在程序执行中数组要改变大小时),可以考虑使用vector

#include <iostream>             //使用cout

#include <vector>                //stl vector头文件

using namespace std;            //使用标准名字空间

void main()

{

vector<int> v;        //创建整形数组

//vector<int> v(10);              //创建数组并初始化为0

//以下四行是向数组中添加元素

v.push_back(1);

v.push_back(2);

v.push_back(3);

 

int nSize = (int)v.size()          //取得数组中元素个数(这里是3)

for (int i=0;i<nSize;i++)

{

cout<<i+1<<”element of the vector is:”<<v[i]<<endl;  //读元素
}

 

       //使用iterator

       vector<int>::iterator itNum = v.begin(); //定位到数组起始位置

       for (;itNum<v.end();itNum++)

       {

              cout<<(int)(itNum-v.begin())+1<<" element in the vector is:"<<*itNum<<endl;

       }

       vector<int>::iterator itDel = v.begin()+1;      //定位到第2个元素

       v.erase(itDel);        //删除第2个元素

       v.insert(v.begin()+1,3);  //在第2 个位置插入3

       v.insert(v.begin()+1,4,2);//从第2个位置起连续插入4

 

       v.clear();        //清除数组中所有元素

       v.push_back(1);

       v.push_back(2);

       v.push_back(3);

       v.reserve(4);          //预分配空间,当元素个数不足预分配的时,容量最小为预分配值,当超过时,则是预分配值倍数中大于元素个数的最小值

       int m = v.capicity(); //m=4;

       v.push_back(4);     //m=4;

       v.push_back(5);     //v.capicity()==8

 

       v.clear();

       v.push_back(1);

       v.push_back(2);

       v.push_back(3);

       v.resize(5);            //此时v中元素为1230,0

       v.push_back(4);     //此时v中元素为1230,04

      

       vector<int>v1,v2;

       v1.push_back(1);

       v1.push_back(2);

       v1.push_back(3);

       v2.push_back(4);

       v2.push_back(5);

       v1.swap(v2);  //此时v1中元素为45v1中元素为123

}

 
<think>嗯,用户想学习STL vector入门教程和基本使用方法。首先,我需要回顾一下C++ STL中vector的基础知识。根据引用[1],vector是动态数组,属于模板类,使用前需要包含头文件<vector>和命名空间std。那应该先介绍头文件和命名空间的部分。 接下来,用户可能需要知道如何创建vector对象。引用[3]提到创建vector的几种方式,比如默认构造、指定元素个数和初始值,还有通过迭代器范围初始化。这部分需要详细说明,并给出示例代码,比如vector<int> v1; 或者vector<int> v2(5, 0);。 然后是关于基本操作的内容,比如添加元素push_back、访问元素用[]或at(),还有容量操作size()、capacity()等。引用[4]中提到了迭代器遍历的方法,应该展示用begin()和end()遍历vector的例子,同时说明如何修改元素值。 内存管理也是vector的重要部分,特别是shrink_to_fit()和swap技巧。引用[2]中的例子用临时对象和swap来收缩内存,这个需要解释清楚原理,比如std::vector<int>(vec).swap(vec)如何减少内存占用。 用户可能还需要一些简单的示例代码来演示这些操作,比如初始化、添加元素、遍历、删除元素等步骤。同时,要注意代码的格式正确,符合LaTeX的要求,用$$包围独立代码块,行内代码用$符号。 最后,生成相关问题的时候,要围绕vector的深入使用、性能优化、与其他容器的比较等方向提问,帮助用户进一步学习。需要确保问题相关且有引导性,比如问内存自动扩展机制或者如何避免迭代器失效。 检查一下引用的标注是否正确,每个引用来源是否对应正确的内容。比如引用[1]是关于头文件和基本介绍,引用[2]是内存收缩的方法,引用[3]和[4]涉及创建和遍历。确保在回答中正确引用这些内容,末尾加上引用标识。 总结一下,回答的结构应该是先介绍vector是什么,然后分点讲解头文件、创建方法、基本操作、内存管理和示例代码,最后附上相关问题。保持语言简洁,用中文,符合用户的要求。</think>### STL vector 入门教程及基本使用方法 #### 一、基本概念与头文件 `std::vector` 是 C++ STL 中的动态数组容器,支持自动扩容、随机访问和高效的元素操作。使用前需包含头文件 `<vector>` 并声明命名空间 `std`[^3]: ```cpp #include <vector> using namespace std; ``` #### 二、创建 vector 对象 1. **默认构造** ```cpp vector<int> v1; // 空向量 ``` 2. **指定元素个数和初始值** ```cpp vector<int> v2(5, 0); // 包含5个0的向量 ``` 3. **通过迭代器范围初始化** ```cpp int arr[] = {1, 2, 3}; vector<int> v3(arr, arr + 3); // 包含1,2,3的向量 ``` #### 三、基本操作 1. **添加元素** ```cpp v1.push_back(10); // 在尾部插入元素10 ``` 2. **访问元素** ```cpp int x = v2[0]; // 通过下标访问(不检查越界) int y = v2.at(1); // 通过at()访问(检查越界,抛出异常) ``` 3. **容量操作** ```cpp int size = v2.size(); // 获取元素数量 bool isEmpty = v1.empty(); // 判断是否为空 v2.reserve(100); // 预分配容量为100 ``` #### 四、迭代器遍历 通过迭代器可遍历并操作元素[^4]: ```cpp vector<int> vec = {1, 2, 3}; for (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) { *it += 1; // 修改元素值 cout << *it << " "; } // 输出:2 3 4 ``` #### 五、内存管理 1. **收缩内存** 使用临时对象和 `swap` 释放多余内存[^2]: ```cpp vector<int>(vec).swap(vec); // 强制内存收缩 ``` 2. **清空向量** ```cpp vec.clear(); // 移除所有元素(不释放内存) vec.shrink_to_fit(); // 释放未使用内存(C++11) ``` #### 六、示例代码 ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; nums.push_back(10); nums.push_back(20); nums.pop_back(); // 删除最后一个元素 for (int num : nums) { cout << num << " "; // 输出:10 } return 0; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值