初步STL集装箱Vector

初步STL集装箱Vector

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

vector

 

特点:

 

1.可变长的动态数组
2.使用时包括头文件 #include <vector>
3.支持随机訪问迭代器
• 依据下标随机訪问某个元素时间为常数
• 在尾部加入速度非常快
• 在中间插入慢

 

 

成员函数

 

初始化

 

vector();              初始化成空
vector(int n);               初始化成有n个元素
vector(int n, const T & val);     初始化成有n个元素, 每一个元素的值都是val,类型是T
vector(iterator first, iterator last);  初始化为与别的容器上区间[first, last)一致的内容

举例:

1.创建一个int类型的空的vector对象: 

  vector<int> intvec; 

2.创建一个包括5个int类型数据的vector: 

    vector<int> intvec(5); 

3.创建一个包括5个int类型数据的vector,而且都初始化为2: 

       vector<int> intvec(5, int(2)); 

4.通过复制某vec容器来创建

     vector<int> intvec(vec.begin+M,vec.begin+N)

 

 

 

 

元素的訪问

 

 

intvec.at(index) 

返回由index指定的位置上的元素

intvec[index] 

返回由index指定的位置上的元素

 

 

 

 

举例:

 

include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec(10);
    for (int i = 0;i != vec.size();i++)
    {
        vec.at(i) = i;
        //vec[i] = i ;
    }

    for (int i = 0;i != vec.size();i++)
    {
        cout << vec.at(i)<<endl;
        //cout <<vec[i]<<endl;
    }

     
    

    return 0;
}


 

 

 

 

容器的大小

 

表达式 

作用

intvec.capacity() 

返回不又一次分配空间能够插入到容器intvec中的元素的最大个数

intvec.empty() 

容器intvec为空。返回true;否则,返回false

Intvec.size() 

返回容器intvec中当前的个数

intvec.resize(num) 

将元素个数改为num。假设size()添加,默认的构造函数负责创建这些新元素

intvec.resize(num, elem)

将元素个数改为num。

假设size()添加,默认的构造函数将这些新元素初始化为elem

 

 

举例:

 

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec1;
    cout << vec1.empty()<<endl; //返回1
    cout << vec1.size()<<endl;  //返回0

    vector<int> vec2(20);
    cout << vec2.empty()<<endl; //返回0
    cout << vec2.size()<<endl;  //返回20

    vector<int> vec3(15,1);
    cout << vec3.capacity()<<endl;//返回15
    vec3.push_back(1);
    cout << vec3.size()<<endl;  //返回16
    cout << vec3.capacity()<<endl;//返回30
                                  //数组不够时。下次又一次分配时会扩大为两倍

    return 0;
}

 

容器的操作

 

   语句   

     作用

intvec.clear()    

从容器中删除全部元素

intvec.erase(position) 

删除由position指定的位置上的元素

intvec.erase(beg,end)   

删除从beg到end-1之间的全部元素

intvec.insert(position, elem)   

将elem的一个拷贝插入到由position指定的位置上,并返回新元素的位置

intvec.inser(position, n, elem) 

将elem的n个拷贝插入到由 position指定的位置上

intvec.insert(position, beg, end) 

将从beg到end-1之间的全部元素的拷贝插入到intvec中由position指定的位置上

intvec.push_back(elem) 

将elem的一个拷贝插入到vector的末尾

intvec.pop_back()   

删除最后元素

intvec.front()

返回第一个元素的引用,不检查容器是否为空

Intvec.back()

返回最后一个元素的引用,不检查容器是否为空

 

 

 

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec(10,1);
    cout<<vec.empty()<<endl;  //返回0
    vec.clear();
    cout<<vec.empty()<<endl;  //返回1

    vector<int> vec1(1,1);
    vec1.insert(vec1.begin()+1,2); //在该位置插入,把原来该位置以其以后的元素总体后移
    for(int i = 0;i != vec1.size();i++)
        cout<<vec1.at(i);  //12
    cout<<endl;

    vec1.push_back(3);
    for(int i = 0;i != vec1.size();i++)
        cout<<vec1.at(i);  //123
    cout<<endl;

    vec1.pop_back();
    vec1.pop_back();
    for(int i = 0;i != vec1.size();i++)
        cout<<vec1.at(i);  //1
    cout<<endl;

    return 0;
}

 

 

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec(10,1);
    vec.push_back(2);//12

    cout<<vec.front()<<endl;  //返回1
    cout<<vec.back()<<endl;  //返回2

    int &head = vec.front();
    head++;
    int &tail = vec.back();
    tail--;
    cout<<vec.front()<<endl;  //返回2
    cout<<vec.back()<<endl;  //返回1

    return 0;
}

 

二维数组

 

vector< vector<int> > v(3);
//v有3个元素,
//每一个元素都是vector<int> 容器

 

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector< vector<int> > v(3);
    for(int i=0; i<v.size(); ++i)
        for(int j=0; j<4; ++j)
            v[i].push_back(j);
    for(int i=0; i<v.size(); ++i){
        for(int j=0; j<v[i].size(); ++j)
            cout<<v[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

 输出:

0  1  2  3

0  1  2  3

0  1  2  3

 

 

 

 

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117513.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea创建java web项目_ideajava创建项目

    idea创建java web项目_ideajava创建项目JavaWeb专栏之(二):Idea创建JavaWeb项目前言:关注:《遇见小Du说》微信公众号,分享更多Java知识,不负每一次相遇。更多内容请访问:www.dushunchang.top在上一篇博客中传送门,小Du带大家了解了什么JavaWeb,B/C与C/S结构,以及Java开发中最常见的MVC三层架构模式。本文章将带大家使用Idea创建JavaWeb项目的教程。在企业开发中,我们经常使用maven构建框架来创建项目,但很多初学者没有接触过Maven构建工具,所以本期教程使用Idea自带的W

    2026年2月2日
    5
  • C++11 decltype 的用法

    C++11 decltype 的用法文章目录decltype的意义decltype的用法1.推导规则2.举例说明3.模版案例更多细节问题C++14取消decltype其他decltype的意义参考博客:C++11新标准:decltype关键字有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量(如果要初始化就用auto了)。为了满足这一需求,C++11新标准引入了decl…

    2025年9月6日
    5
  • Spring的AOP实现原理

    Spring的AOP实现原理本学习笔记将尽可能的将AOP的知识讲解的通俗易懂,先从一个典型的问题出发,引入AOP这个概念,介绍AOP的基本概念,再到Spring中的AOP的实现方案,最后进行一个简单的总结归纳。本学习笔记中不考虑cglib、也不会太关注SpringAOP如何使用,而是尽可能的简单的说清楚AOP的工作原理。笔记中贴出的源代码均是Spring5.1.7-RELEASE版本问题提出如下代码块,现在需要统计这个方法执行的耗时情况publicvoidrunTask(){doSome

    2026年1月16日
    3
  • ubuntu 18.04 安装 opencv(踩了很多雷终于整合成一个完整的成功版本)[通俗易懂]

    ubuntu 18.04 安装 opencv(踩了很多雷终于整合成一个完整的成功版本)[通俗易懂]更新源 sudo apt update 安装相关包 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libjasper 报错:无法定位到 libj…

    2022年8月18日
    8
  • NoSQL之Redis数据库初探

    一、NoSQL的风生水起1.1后Web2.0时代的发展要求随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经

    2021年12月28日
    60
  • goland 永久激活码【最新永久激活】

    (goland 永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月2日
    210

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号