vector详解

/*vector向量容器*/

//用数组方式访问vector元素 
#include<iostream>
#include<vector>
#include<cstdio> 
using namespace std;
int main()
{
    vector<int>v;
    v.push_back(20);//尾端插入新元素
    v.push_back(26);
    v.push_back(12);
    for(int i=0;i<v.size();i++) 
        cout<<v[i]<<' '; 
    getchar();
    return 0;
}
//输出:20 26 12

//用迭代器访问vector
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
vector<int>v;
void print()//迭代器遍历 
{
    int j;
    vector<int>::iterator i;
    for(i=v.begin(),j=0;i!=v.end();i++,j++)
      cout<<"v["<<j<<"]="<<*i<<" ";
    cout<<endl;
} 
int main()
{
    int j;
    v.push_back(0);/*尾端插入新元素*/ print();
    v.push_back(1);print();
    /*v.clear();全部清空元素 */
    v.push_back(2);print();
    v.insert(v.begin()+2,9);/*插入9在第二个后面 */print();
    v.insert(v.begin(),5);/*插入5为首元素print(); */print();
    v.insert(v.end(),12);/*插入12为末元素 */print();
    
    v.erase(v.begin()+1);/*删除第2个元素 */print();
    v.erase(v.begin(),v.begin()+2);/*删除前两个元素 */print();
    
    swap(v[1],v[2]);print();
    
    cout<<v.empty()<<endl;/*判断是否为空 */
    cout<<v.size()<<endl;/*元素实际个数 */
    cout<<v.max_size()<<endl;/*可容纳的最大元素个数 */
    cout<<v.size()<<endl;
    cout<<v.capacity()<<endl;/*当前可容纳的vector元素个数 */
    cout<<v.front()<<endl;/*首元素引用*/ 
    cout<<v.back()<<endl;/*末元素引用 */
    v.pop_back();/*删除末尾的一个元素 */print();
    
    v.reserve(30);/*调整数据空间大小 */
    cout<<v.capacity()<<endl;
    
    vector<int>::reverse_iterator ri;//反向迭代器 
    for(ri=v.rbegin();ri!=v.rend();ri++)//首尾反向 
      cout<<*ri<<" ";
    getchar();
    return 0;
}

/*输出:
v[0]=0
v[0]=0 v[1]=1
v[0]=0 v[1]=1 v[2]=2
v[0]=0 v[1]=1 v[2]=9 v[3]=2
v[0]=5 v[1]=0 v[2]=1 v[3]=9 v[4]=2
v[0]=5 v[1]=0 v[2]=1 v[3]=9 v[4]=2 v[5]=12
v[0]=5 v[1]=1 v[2]=9 v[3]=2 v[4]=12
v[0]=9 v[1]=2 v[2]=12
v[0]=9 v[1]=12 v[2]=2
0
3
1073741823
3
8
9
2
v[0]=9 v[1]=12
30
12 9*/ 
/*reverse 颠倒
vector 向量*/ 

 

转载于:https://www.cnblogs.com/thmyl/p/6062575.html

C++中的`std::vector`是一个动态数组容器,属于标准模板库(STL)的一部分。它提供了在运行时动态调整大小的能力,并且支持随机访问元素[^1]。 ### 功能与特性 #### 1. 动态大小 `std::vector`可以在程序执行期间动态地增加或减少其大小。这意味着不需要预先知道数组的大小[^1]。 ```cpp std::vector<int> vec; vec.push_back(10); // 添加元素到向量末尾 vec.pop_back(); // 移除最后一个元素 ``` #### 2. 随机访问 可以通过索引直接访问`std::vector`中的任意元素,这使得访问速度非常快[^1]。 ```cpp std::vector<int> vec = {1, 2, 3, 4, 5}; int thirdElement = vec[2]; // 访问第三个元素 ``` #### 3. 迭代器支持 `std::vector`支持迭代器,可以用来遍历容器中的元素。这对于删除特定条件下的元素特别有用。 ```cpp std::vector<int> a = {12, 23, 34, 45, 56, 67, 78, 89}; auto iter = a.begin(); while (iter != a.end()) { if (*iter > 30) { iter = a.erase(iter); // 删除大于30的元素并更新迭代器 } else { ++iter; // 否则继续下一个元素 } } ``` #### 4. 容量管理 `std::vector`提供了多种方法来管理和查询容量,如`capacity()`、`reserve()`和`shrink_to_fit()`等。 ```cpp std::vector<int> vec; vec.reserve(100); // 预留至少能容纳100个元素的空间 vec.shrink_to_fit(); // 尝试减少内存使用以匹配当前元素数量 ``` #### 5. 元素插入与删除 除了`push_back`和`pop_back`之外,还可以使用`insert`和`erase`来进行更复杂的操作。 ```cpp std::vector<int> vec = {1, 2, 4, 5}; vec.insert(vec.begin() + 2, 3); // 在第三个位置插入3 vec.erase(vec.begin() + 2); // 删除第三个位置的元素 ``` #### 6. 空间分配 当需要更多的空间时,`std::vector`会自动重新分配内存。这种行为可以通过`allocator`来定制。 ```cpp std::vector<int>::allocator_type alloc = vec.get_allocator(); ``` #### 7. 异常安全性 大多数`std::vector`的操作都保证了基本的异常安全,即如果抛出异常,对象的状态仍然有效。 #### 8. 性能优化 由于`std::vector`内部实现为连续存储,因此对于顺序访问和缓存友好性非常好。然而,频繁的插入和删除可能导致性能下降[^1]。 #### 9. 多维向量 `std::vector`也可以嵌套使用,创建多维数组结构[^1]。 ```cpp std::vector<std::vector<int>> matrix = {{1, 2}, {3, 4}}; ``` #### 10. 自定义类型支持 不仅可以存储内置类型的元素,还可以存储用户自定义类的对象。 ```cpp struct Point { int x, y; }; std::vector<Point> points; points.push_back({1, 2}); ``` 通过上述功能和特性的介绍,可以看到`std::vector`是一个强大而灵活的数据结构,适用于各种不同的应用场景。正确理解和利用这些特性可以帮助开发者编写高效且易于维护的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值