27.【C/C++ 最全vector数组的用法 (详解)】(一)

简介: 27.【C/C++ 最全vector数组的用法 (详解)】

(一)、什么是vector?

Vector类 是在 java 中可以实现自动增长的对象数组,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

(二)、vector的作用是什么

vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。[1]

(三)、经典用法:

1.vector函数的定义:

代码展示:
#include <vector>
using namespace std;
int main()
{
    int a[10];            //正常定义      
    vector<int> str_a;    //vector 定义
    char b[10];
    vector<char> str_b;
    float c[10];
    vector<float> str_c;
}
效果展示:

2.vector的初始化:

1.vector<数据类型> 函数名; 初始化为空

2.vector<数据类型> 函数名(a,b).定义a个空间,都初始化为b。

3.vector<数据类型> 函数名1=函数名2. 把动态数组2复制给动态数组1。

4.vector<数据类型> 函数名1(函数名2.begin(),函数名2.end()). 把动态数组2复制给动态数组1。

5.vector<数据类型> 函数名(a,a+sizeof(a)/sizeof(数据类型)),把普通数组a复制给动态数组。

==========================================

代码展示:
#include <vector>
using namespace std;
int main()
{
 int a[5] = {1,2,3,4,5};
 vector<int> str_a; //初始化为空  
 vector<int> str_a1(4, 88); // 定义四个元素,每个元素的值为88;
 vector<int> str_a2 = str_a1; //把a1的值复制给a2;
 vector<int> str_a3(str_a1.begin(), str_a1.end()); //把a1的值复制给a2;
 vector<int> str_a4(a, a + sizeof(a)/sizeof(int)); //复制正常数组的初始化
 return 0;
}
效果展示:

3.vector的简单属性

1.【动态数组的访问下标】

函数名[n],   n就是访问第几个元素

2.【动态数组的访问at函数】

函数名.at(n),   n就是访问第几个元素

3.【动态数组的长度】

函数名.size(),     获取长度

4.【获取动态数组第一个元素】

函数名.front()

5.【获取动态数组最后一个元素】

函数名.back()

6.【判断动态数组是否为空】

函数名.empty()    ,假如是返回true.

7.【动态数组的交换】

函数名1.swap(函数名2)    把俩函数的内容交换

8.【动态数组元素的清空】

函数名.clear()

====================================

代码展示:
#include <vector>
#include <iostream>
using namespace std;
int main()
{
 int a[5] = {1,2,3,4,5};
 vector<int> str_a; //初始化为空  
 vector<int> str_a1(4, 88); // 定义四个元素,每个元素的值为88;
 vector<int> str_a2 = str_a1; //把a1的值复制给a2;
 vector<int> str_a3(str_a1.begin(), str_a1.end()); //把a1的值复制给a2;
 vector<int> str_a4(a, a + sizeof(a)/sizeof(int)); //复制正常数组的初始化
 int a5 = str_a4[2]; //vector 动态数组的访问,用下标
 int b = str_a4.at(2); // 利用at函数,也就是下下标
 cout << "a=" << a5 << " " << "b=" << b << endl;
 cout << "str_a4的长度为:" << str_a4.size() << endl; //获取长度,
 cout << "str_a4的第一个元素为:" << str_a4.front() << endl; // 获取第一个元素
 cout << "str_a4的第一个元素为:" << str_a4.back() << endl; //获取最后一个元素
 bool p = str_a4.empty(); //判断是否为空
 str_a4.swap(str_a1);
 //str_a4.clear(); //对数组元素清空
 return 0;
}
效果展示:

4.vector的插入与删除

1.【单尾部插入】

函数名.push_back(a),    向尾部插入一个元素a,只能一个个插入,且只能在尾部。

2.【多元插入】 从哪插 插什么

函数名1.insert(函数名1.begin(),a),   向头部插入一个元素a.
函数名1.insert(函数名1.end(),n,a),向尾部插入n个元素 a.

3.【普通数组插入动态数组】

函数名1.insert(函数名1.begin(),普数组名,普数组名+sizeof(普数组名)
  /sizeof(函数类 型))
  从哪开始  普通数组首位置,普通数组末位置

4.【单尾部删除元素】

函数名.pop_back()     删除最后一个元素


相关文章
|
2月前
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
135 2
|
4天前
|
算法 编译器 C++
模拟实现c++中的vector模版
模拟实现c++中的vector模版
|
1月前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
42 5
|
3月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
62 3
【C++】map、set基本用法
|
3月前
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
137 4
|
2月前
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
101 0
|
2月前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
87 0
|
2月前
|
存储 编译器 C语言
【c++丨STL】vector模拟实现
本文深入探讨了 `vector` 的底层实现原理,并尝试模拟实现其结构及常用接口。首先介绍了 `vector` 的底层是动态顺序表,使用三个迭代器(指针)来维护数组,分别为 `start`、`finish` 和 `end_of_storage`。接着详细讲解了如何实现 `vector` 的各种构造函数、析构函数、容量接口、迭代器接口、插入和删除操作等。最后提供了完整的模拟实现代码,帮助读者更好地理解和掌握 `vector` 的实现细节。
67 0
|
4月前
|
存储 C++ 索引
【C++打怪之路Lv9】-- vector
【C++打怪之路Lv9】-- vector
40 1
|
4月前
|
算法 C++ 容器
C++之打造my vector篇(下)
C++之打造my vector篇(下)
46 0