ch1

ch1,第1张

1. 数组 array 1.1 数组的属性

array 数组的特性:

  1. 在内存中是以连续地址存放的, 并且存放的内容具有相同的数据类型;
  2. 数组下标是从0开始;

根据 属性1, 对数组进行删除和 增加元素时, 需要移动其他元素; (而所谓的删除,是通过后序元素往前移动,覆盖待删除的元素实现的;)
属性2, 在数组中根据下标查找元素时, 时间复杂度 O ( 1 ) O(1) O(1);

1.2 c++ 中的数组 array

c ++ 中声明一个数组, 需要指定数组中存储的数据类型,以及数据的大小数量:

int arr1[10]:
声明一个整型的数组, 数组的大小为10;

注意, c++ 中 vector 和 array 的区别:
vector 是容器, 它的底层实现使用了数组 array;

1.3 c++ 中的array的初始化
#include
using nameapace std;
int main()
{
//数组的定义三种方式
	int numpy[5];//第一种
	int numpy1[5] = { 0,1,2,3,4 };
	//第二种(如果没有全部填写完,会用0进行填补)
	//大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。


float numpy2[] = { 0.23,0.56 };//第三种 如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数 numpy[0] = 52;//为数组中某个元素赋值的实例: cout << numpy[0] << endl; cout << numpy2[1] << endl; for (int i = 0; i < 5; i++) { cout << numpy1[i] << endl; } system("pause"); return 0; }

2. 容器之 vector

容器的类型有多种, 常见的有array, vector, deque, forward_list(单向链表), list(双向链表), stack, queue(队列), priority_que, set;

vector 表示可以改变大小的数组的序列容器,
可以简单的认为, 向量是一个能够存放任意类型的动态数组;

向量vector 是一个封装了 动态大小的数组的;

2.1 vector的实现机理

vector是一种序列式容器,其数据安排以及 *** 作方式与array非常类似,两者的唯一差别就是对于空间运
用的灵活性;

  1. array占用的是静态空间,一旦配置了就不可以改变大小,如果遇到空间不足的情况还要自行创建更大的空间,并手动将数据拷贝到新的空间中,再把原来的空间释放。


  2. vector则使用灵活的动态空间配置,维护一块连续的线性空间,在空间不足时,可以自动扩展空间容纳新元素,做到
    按需供给。


    其在扩充空间的过程中仍然需要经历:重新配置空间,移动数据,释放原空间等 *** 作。


这里需要说明一下动态扩容的规则:以原大小的两倍配置另外一块较大的空间(或者旧长度+新增元素的个
数),源码:

const size_type  len = old_size + max(old_size, n);

Vector扩容倍数与平台有关,在Win + VS 下是 1.5倍,在 Linux + GCC 下是 2 倍

2.2 vector 的声明与初始化 2.2.1 vector 声明;
vector  nums; 
 //  nums 是一个vector 类型的容器,
 // 代表是一个长度大小可变的动态数组,  容器中存放的数据类型是 int 型; 

vector  nums(N)  // 指定该nums 的大小为 N;

vector nums: 
//nums是一个容器变量,容器名称为vector,容器内存的数据为int型;

int& nums //  nums 是一个引用,  引用的对象数据类型是整型;

vector& nums:
//nums为一个引用变量,引用的目标属性是 int型 vector容器;
2.2.1 vector 初始化;

一维情况:
以int 类型数据举例

  1. 给定数组长度 N, 以及 数组中元素的初始值为默认值0
vector<int> data(N)
N 为默认数组长度, 默认初始值为0
  1. 默认数组长度为N, 默认初始值为 Value
vector<int> data(N, value)

  1. 直接给定数据
vector<int> data = {1,2345}
  1. 动态改变长度
    调用 vector 中resize();

二维情况:


  1. 设置数组长度的默认初始

vector<vector<int>> data(N1, vector<int>(N2));
N1为行,N2为列,默认值为0
  1. 设置数组长度的给定初始值
vector<vector<int>> data(N1, vector<int>(N2,value));
N1为行,N2为列,默认值为value;

  1. 直接给定数据(以初始一个2X5的数组为例)
vector<int> data = {{1,2,3,4,5},{6,7,8,9,10}}
  1. 动态改变长度(主要调用vector 中的resize()函数)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/565128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-06
下一篇 2022-04-06

发表评论

登录后才能评论

评论列表(0条)

保存