码迷,mamicode.com
首页 > 编程语言 > 详细

vector容器 单端数组、动态数组

时间:2021-04-19 15:55:39      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:报错   name   for   就是   col   style   end   family   pac   

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<algorithm>
 5 using namespace std;
 6 
 7 void test01()
 8 {
 9     vector<int> v;
10     for(int i =0;i<10;i++)
11         v.push_back(i);
12     cout << v.capacity() << endl;//容量capacity
13 }
14 void PrintVec(vector<int> &v)
15 {
16     for(vector<int>::iterator it =v.begin();it != v.end();it++)
17     {
18         cout << *it << " ";
19     }
20     cout << endl;
21 }
22 void test02()
23 {
24     int arr[] = {2,3,4,1,9};
25     vector<int>v(arr,arr+sizeof(arr)/sizeof(int));
26     vector<int> v1(v.begin(),v.end());
27     //PrintVec(v1);
28     
29     vector<int>v3(10,3);
30     //PrintVec(v3);
31     
32     //assign赋值
33     vector<int>v4;
34     v4.assign(v3.begin(),v3.end()) ;
35     //PrintVec(v4);
36     
37     //swap交换
38     v4.swap(v);
39     //PrintVec(v4);
40     
41     
42     //size大小
43     cout << v4.size() << endl;
44     
45     //empty
46     if(v4.empty())
47     {
48         cout << "v4 is empty" << endl;
49     }
50     else
51     {
52         cout << "v4 is not empty" << endl;
53     }
54     //v4.resize(10);重置大小resize,默认值0
55     v4.resize(10,-1);//重载第二个参数为赋给默认值-1
56     PrintVec(v4);
57     
58     v4.resize(3);
59     PrintVec(v4);
60     
61 }
62 int main()
63 {
64     test02();
65 }

构造函数

vector<T> v; //采用模板实现类实现,默认构造函数

vector(v.begin(), v.end());//将v[begin(), end())区间中的元素拷贝给本身。

vector(n, elem);//构造函数将n个elem拷贝给本身。

vector(const vector &vec);//拷贝构造函数。

 

//例子 使用第二个构造函数 我们可以...

int arr[] = {2,3,4,1,9};

vector<int> v1(arr, arr + sizeof(arr) / sizeof(int)); 

vector常用赋值操作

assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。

assign(n, elem);//将n个elem拷贝赋值给本身。

vector& operator=(const vector  &vec);//重载等号操作符

swap(vec);// 将vec与本身的元素互换。

vector大小操作

 

size();//返回容器中元素的个数

 

empty();//判断容器是否为空

 

resize(int num);//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。

 

resize(int num, elem);//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长>度的元素被删除。

 

capacity();//容器的容量

 

reserve(int len);//容器预留len个元素长度,预留位置不初始化,元素不可访问。

 

void test03()
{
    vector<int> v;
    for(int i = 0;i<100000;i++)
    {
        v.push_back(i);
    }
    cout << v.capacity() << endl;
    cout << v.size() << endl;
    
    v.resize(3);
    cout << v.capacity() << endl;
    cout << v.size() << endl;
    
    vector<int>(v).swap(v);
        //创建匿名对象vector<int>() 完成swap与匿名对象交换
    cout << v.capacity() << endl;
    cout << v.size() << endl;
}

vector数据存取操作

 

at(int idx); //返回索引idx所指的数据,如果idx越界,抛出out_of_range异常。

 

operator[];//返回索引idx所指的数据,越界时,运行直接报错

 

front();//返回容器中第一个数据元素

 

back();//返回容器中最后一个数据元素

vector插入和删除操作

 

insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele.

 

push_back(ele); //尾部插入元素ele

 

pop_back();//删除最后一个元素

 

erase(const_iterator start, const_iterator end);//删除迭代器从start到end之间的元素

 

erase(const_iterator pos);//删除迭代器指向的元素

 

clear();//删除容器中所有元

 

void test04()
{
    vector<int>v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    cout << v.front() <<"    " <<  v.back() << endl;
    
    v.insert(v.begin(),2,100);
    PrintVec(v);
    
    v.pop_back();
    PrintVec(v);
    cout << "----------------------" <<endl;
    v.erase(v.begin());
    PrintVec(v);
    
    v.erase(v.begin(),v.begin()+3);
    PrintVec(v);
    
    v.clear();
    PrintVec(v);
}
void test05()
{
    vector<int>v;
    for(int i=0;i<10;i++)
    {
        v.push_back(i);
    }
    for(vector<int>::reverse_iterator it = v.rbegin();it != v.rend();it++)
    {
        cout << *it << "  ";
    }
    cout << endl;

    vector<int>::iterator itbegin = v.begin();
    itbegin = itbegin + 3;
    //如果上述写法不报错,这个迭代器就是随机访问迭代器
    
}

 

vector容器 单端数组、动态数组

标签:报错   name   for   就是   col   style   end   family   pac   

原文地址:https://www.cnblogs.com/helloql/p/14670762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!