#include<vector>

#include<vector>

查了下这个头文件的作用,现在搞不懂,先保存再说,貌似好用
先简单介绍一下,vector是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快,而且如果你用.at()访问的话,也可以做越界检查。

#include <vector>

双端队列deque比向量vector更有优势
vector是动态数组,在堆上
vector比array更常用
不需要变长,容量较小,用array
需要变长,容量较大,用vector
1 at()

取出下标

2 c_str()

执行

3 clear()

清空

4 erase()

根据迭代器的位置,删除元素

erase(myvector.begin() + 3)

5 fill

填充

6 find

7 find_if

8 find_if_not

9 insert()

插入元素

insert(myvector.begin() + 3, 998);//在第4个位置插入

10 pop_back()

删除最后一个元素

11 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

12 size()

求数组元素个数

13 sort

排序

14 swap()

交换

1 at()

取出下标

4 erase()

根据迭代器的位置,删除元素

erase(myvector.begin() + 3)

5 insert()

插入元素

insert(myvector.begin() + 3, 998);//在第4个位置插入

6 pop_back()

删除最后一个元素

7 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

8 size()

求数组元素个数

1

三。在第2个位置前插入,新数据变成第2(从0开始计算的话)
38
39 for (int i = 0; i < myvector.size(); i++)//遍历
40 {

41 std::cout << myvector[i] << std::endl;
42 }
43 std::cout << std::endl;
44
45 system(“pause”);
46 }

2 c_str()

执行

3 clear()

清空

6 pop_back()

删除最后一个元素

7 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

8 size()

求数组元素个数

1

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

void main()
{
   
    std::vector<int>myvector;//创建一个数组,数组元素是int类型

    myvector.push_back(1);//尾部加入一个数据
    myvector.push_back(11);
    myvector.push_back(111);
    myvector.push_back(1111);
    myvector.push_back(2);

    myvector.pop_back();//删除尾部元素

    for (int i = 0; i < myvector.size(); i++)//遍历
    {
   
        //std::cout << myvector[i] << std::endl;//上下一样
        std::cout << myvector.at(i) << std::endl;//上下一样,at()可以取出下标
    }
    std::cout << std::endl;

    //根据迭代器的位置删除
    myvector.erase(myvector.begin() + 3);//删除第四个元素。删除第3个元素(从0开始计算的话)

    for (int i = 0; i < myvector.size(); i++)//遍历
    {
   
        if (1)
        {
   
            //可以增加查询,修改功能
        }
        std::cout << myvector[i] << std::endl;
    }
    std::cout << std::endl;

    myvector.insert(myvector.begin() + 2, 998);//在第三个位置前插入,新数据变成第三。在第2个位置前插入,新数据变成第2(从0开始计算的话)

    for (int i = 0; i < myvector.size(); i++)//遍历
    {
   
        std::cout << myvector[i] << std::endl;
    }
    std::cout << std::endl;

    system("pause");
}

//正向迭代器iterator,begin()返回一个迭代器,它指向容器c的第一个元素,end()返回一个迭代器,它指向容器c的最后一个元素的下一个位置

//反向迭代器reverse_iterator,rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素,rend()返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

image

反向迭代器是一种反向遍历容器的迭代器。也就是,从最后一个元素到第一个元素遍历容器。反向迭代器将自增(和自减)的含义反过来了:对于反向迭代 器,++ 运算将访问前一个元素,而 – 运算则访问下一个元素。

1


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

void main()
{
   
    std::vector<std::string>string1;//创建一个字符串数组

    string1.clear();//清空

    string1.push_back("notepad");//尾部加入
    string1.push_back("calc");
    string1.push_back("mspaint");

    //正向迭代器iterator,begin()返回一个迭代器,它指向容器c的第一个元素,end()返回一个迭代器,它指向容器c的最后一个元素的下一个位置
    std::vector<std::string>::iterator ibegin, iend;//创建两个迭代器指针
    ibegin = string1.begin();//初始化迭代器指针,数据起始点
    iend = string1.end();//初始化迭代器指针,结束

    for (; ibegin != iend; ibegin++)//从头到尾
    {
   
        std::string tempstr = *ibegin;//创建中间临时变量,获取指针指向的数据
        system(tempstr.c_str());//执行
    }

    //反向迭代器reverse_iterator,rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素,rend()返回一个逆序迭代器,它指向容器c的第一个元素前面的位置
    std::vector<std::string>::reverse_iterator rbegin = string1.rbegin();//创建迭代器指针,数据起始点
    std::vector<std::string>::reverse_iterator rend = string1.rend();//创建迭代器指针,结束

    while (rbegin != rend)//从尾到头
    {
   
        std::string tempstr = *rbegin;//获取指针指向的数据
        system(tempstr.c_str());//执行
        rbegin++;//指针移动
    }

    system("pause");
}

7 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

8 size()

求数组元素个数

 

//创建一个数组变量,元素是数组

vector可用于管理不规则的树状结构

国家-省-市县


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

void main()
{
   
    std::vector<int>myvector1;//创建一个数组变量,元素是int类型
    myvector1.push_back(12);
    myvector1.push_back(13);
    myvector1.push_back(14);

    std::vector<int>myvector2;//创建一个数组变量,元素是int类型
    myvector2.push_back(22);

    std::vector<int>myvector3;//创建一个数组变量,元素是int类型
    myvector3.push_back(32);
    myvector3.push_back(37);

    std::vector<std::vector<int>>allvector;//创建一个数组变量,元素是数组
    allvector.push_back(myvector1);
    allvector.push_back(myvector2);
    allvector.push_back(myvector3);

    for (int i = 0; i < allvector.size(); i++)//遍历
    {
   
        for (int j = 0; j < allvector[i].size(); j++)
        {
   
            std::cout << " " << allvector[i][j];
        }
        std::cout << std::endl;
    }

    system("pause");
}

fill

#include <iostream>
#include <algorithm>
#include <vector>

template <class T>
class show
{
   
public:
    void operator()(T &t)
    {
   
        std::cout << t << " ";
    }
};

void main()
{
   
    std::vector<int>myv;

    myv.push_back(7);
    myv.push_back(8);
    myv.push_back(9);
    myv.push_back(4);
    myv.push_back(5);
    myv.push_back(6);

    fill(myv.begin() + 2, myv.end(), 10);//从下标2开始到尾部,用10填充
    
    for_each(myv.begin(), myv.end(), show<int>());
}

find

#include <iostream>
#include <vector>

void main()
{
   
    std::vector<int>myv;

    myv.push_back(1);
    myv.push_back(2);
    myv.push_back(3);

    auto i = find(myv.begin(), myv.end(), 22);

    if (i == myv.end())
    {
   
        std::cout << "not found" << std::endl;
    }
    else
    {
   
        std::cout << *i << std::endl;
    }
}

sort

全部元素排序

#include <iostream>
#include <algorithm>
#include <vector>

template <class T>
class show
{
   
public:
    void operator()(T &t)
    {
   
        std::cout << t << " ";
    }
};

void main()
{
   
    std::vector<int>myv;

    myv.push_back(7);
    myv.push_back(8);
    myv.push_back(9);
    myv.push_back(4);
    myv.push_back(5);
    myv.push_back(6);

    sort(myv.begin(), myv.end());//排序
    
    for_each(myv.begin(), myv.end(), show<int>());
}
sort

部分元素排序
  #include <iostream>
#include <algorithm>
#include <vector>

template <class T>
struct show
{
   
public:
    void operator()(T &t)
    {
   
        std::cout << t << " ";
    }
};

void main()
{
   
    std::vector<char>myv;

    myv.push_back('B');
    myv.push_back('A');
    myv.push_back('C');
    myv.push_back('Y');
    myv.push_back('Z');
    myv.push_back('X');

    for_each(myv.begin(), myv.end(), show<char>());
    std::cout << std::endl;

    sort(myv.begin(), myv.begin() + 3);

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

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

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


相关推荐

  • N的阶乘(大数阶乘算法)

    N的阶乘(大数阶乘算法)题目描述输入一个正整数N,输出N的阶乘。输入描述:正整数N(0<=N<=1000)输出描述:输入可能包括多组数据,对于每一组输入数据,输出N的阶乘输入例子:4515输出例子:241201307674368000#include<iostream>#include<cstring>usingnames…

    2022年7月24日
    8
  • web图书销售管理系统_解读图书管理系统为书店带来的好处

    web图书销售管理系统_解读图书管理系统为书店带来的好处图书管理系统的出现,极大地推动了大中小型书店的发展,使书店管理工作更加高效成为书店管理的重要软件。其中图书管理系统给行业的好处更是大大方便了行业的运作。一、图书管理系统在书店中的应用,主要是为了进销存的目的,为了提高书店的效率加速发展,但没有选择合适的图书管理系统往往事与愿违。图书管理制度的选择是书店经营管理工作中的重要环节。图书管理系统,尤其是进销存功能,是书店在经营过程中对采购、销售、财务等进…

    2022年6月8日
    44
  • matlab在指定figure中画图_matlab保存fig为图片语句

    matlab在指定figure中画图_matlab保存fig为图片语句转载:http://www.ilovematlab.cn/thread-296430-1-1.html最近看了一些用matlab对图形图片进行保存的帖子和资源,关于图像保存的方法给大家分享一下这些方法是大家所使用方法的一个总结.如今常用的方法有三种printf,imwrite,saveas下面分别介绍一下:imwritemwrite将图像数据写成图像文件,一般用

    2025年11月2日
    3
  • 计算机3级数据库技术考哪些内容,计算机考试三级数据库技术考试大纲[通俗易懂]

    计算机3级数据库技术考哪些内容,计算机考试三级数据库技术考试大纲[通俗易懂]全国计算机等级考试采用全国统一命题,统一考试的形式。所有科目每年开考两次。下面是小编整理的计算机考试三级数据库技术考试大纲,欢迎大家参考!基本要求1.掌握数据库技术的基本概念、原理、方法和技术。2.能够使用SQL语言实现数据库操作。3.具备数据库系统安装、配置及数据库管理与维护的基本技能。4.掌握数据库管理与维护的`基本方法。5.掌握数据库性能优化的基本方法。6.了解数据库应用系统的生命周期及其设…

    2022年6月21日
    31
  • 时间片轮转调度算法详解

    时间片轮转调度算法详解轮转调度算法 Round Robin RR 在分时系统中都采用时间片轮转算法进行进程调度 时间片是指一个较小的时间间隔 通常为 10 100 毫秒 在简单的轮转算法中 系统将所有的就绪进程按先来先服务 即 FIFO 规则排成一个队列 将 CPU 分配给队首进程 且规定每个进程最多允许运行一个时间片 若时间片使用完进程还没有结束 则被加入就绪 FIFO 队列队尾 并把 CPU 交给下一个进程 时间片轮转算法只用于进程调度 它属于抢占调度方式 优点 CPU 分配相对公平 平均响应时间较短缺点 不利于紧急作业 而且当进程

    2025年8月18日
    3
  • 网络-访问控制

    网络-访问控制1.访问控制访问控制就是限制访问主体对访问客体的访问权限控制,决定主体对客体能做什么和做到什么程度访问主体(主动):用户,进程,服务访问客体(被动):数据库,资源,文件2.访问控制的两个过程认证:先由认证来检验主体(用户)的合法身份,在访问控制之前授权:由管理员决定和限制主体(用户)对资源的访问级别!!注意:审计也在主体对客体访问的过程中,但是,审计是访问过程中,对访问情况的记录和审查,他只是产生一些log,用来分析安全事故产生的原因,和访问控制无关,就是个辅助用的,可要可不要。3.访问控制

    2022年7月23日
    11

发表回复

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

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