vector使用小结

1、创建vector容器:

std::vector<int> data;

std::vector<int> data(20);大小20,自动赋值为0

std::vector<int> data(20,9);大小20,并且初始值为9

表示创建vector容器,其容器内的数据类型为int类型。该初始化时,因为容器内没有元素,因而没有分配空间。可以调用reserve()函数增加容器的容量。

2、vector容器的容量和大小

       容量:在不分配更多内存的情况下可以保存的最多元素个数。

        大小:容器实际所保存的元素个数。

std::vector<int > data;

data.capacity();得到容量大小。

data.size();得到容器实际大小

容器的大小可以使用resize()来改变容器大小。reserve()函数增加容量。

3、访问元素

       使用方括号,在方括号中使用引用。下标默认从0开始。使用push_back(),insert(),emplace()插入新的元素。为了安全,防止出现数组下标越界。尽可能使用at()去访问vector元素。

4、增加元素

使用push_back()函数,在序列的末尾添加一个元素。使用emplace_back()也可以达到同样的效果

push_back()和emplace_back()的区别:emplace_back()直接调用构造函数。而push_back()则需要生成对象,然后调用对象构造函数。

5、插入元素

使用emplace()和insert()插入元素

iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
insert() 函数有以下三种用法:
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
在指定位置loc前插入num个值为val的元素
在指定位置loc前插入区间[start, end)的所有元素 .

6、删除元素

   使用clear()来删除元素,但是该操作并没有改变容器的容量;使用pop_back()函数来删除尾部元素。

使用erase()来删除容器内的一个或者多个元素;remove()可以删除匹配特定特征值的一段元素。

参考代码:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    cout << "vector 使用示例" << endl;
    cout << "vector 创建"<<endl;
    cout << "----------------------------"<<endl;
    //创建vector的三种方式
    vector<int> data;
    vector<int> data1(10);
    vector<int> data2(5,99);
    cout << "----------vector容量和大小-----------"<<endl;
    cout << "容量"<< data1.capacity() << "大小"<<data1.size()<<endl;
    cout << "容量"<< data2.capacity() << "大小"<<data2.size()<<endl;
     data1.reserve(20);
     cout << data1.capacity()<<endl;
     data1.resize(15);
     cout<< data1.size() << "容量"<<data1.capacity()<<endl;
     cout<< "-----------访问元素----------"<<endl;
     cout << data2.at(4) <<" "<< data2[4]<<endl;
     cout << data2.front() << " " << data2.back();
     cout << "-----------增加元素---------" <<endl;
     data2.push_back(10);
     data2.emplace_back(15);
     cout << data2.back()<<endl;
     cout << "-------插入元素-------"<<endl;
     vector<string> words {"one","two","three"};
     auto iter = words.emplace(++begin(words),5,'A');
     cout << words.at(1)<<*iter;
     //insert
     auto iter1 = words.insert(++std::begin(words),"twowwwww");
     cout    << *iter1<<endl;
     cout << "----- 删除元素---------" <<endl;
     //words.clear();//清楚所有元素,不改变容量
     words.pop_back();
     cout << *(words.end()-1)<<endl;
     //erase()删除一个或者多个元素
     //remove()删除匹配特定值的一段
     //std::remove(begin(words),end(words),"two");
     cout << words.back()<<endl;
    return 0;
 }

猜你喜欢

转载自www.cnblogs.com/tingweichen/p/9954236.html