c语言中常见的组成数组的形式有以下几种:

  • 指针数组:如 int a[7],c语言自带,使用简单,功能也最简单,适合存储一般的数据。本质上是指针。
  • vector数组:需要包含头文件vector,类似于指针型数组,但是比指针型数组多了很多功能。本质为一个类,其各种功能的实现依赖于类的成员函数。
  • Qvector数组:Qvector是qt中一种常见的容器,功能比vector更多
  • eigen数组:eigen是

值得一提的是,它们的序号均从0开始。


指针型数组使用指南

定义方式

int a[7]= {0,0,0,1,0,0,0};

依次说明了数组的数据类型、数组名、数组长度并定义了数组内的数据。这里用的是花括号{}。

取出和存入数据

a[0] = 1;
int a1 = a[1];

注意,这里使用的都是方括号[].

多维数组的定义

int b[2][2]= {{0,1},{2,3}};

这里,内层的花括号也可以不写,数组按照定义的长度自己进行划分

去除和存入多维数组中数据的方式和一维数组相同。

数组的复制

由于数组实际上是一个指针,数组的复制实际上是指针的复制,而不会增加一份数值。修改其中一个数组内的值时,另一个数组中的值也会改变。

int *b = a;

vector型数组使用指南

需要添加头文件及命名域

#include <vector> 
using std::vector;

定义方式

vector<int> test1;//定义一个空vector,长度不限。
vector<int> test2(10);//定义一个固定长度的vector,但是不常用
vector<int> test3(10,1)//通过构造函数定义元素均相同的vector
int a[] = {1, 2, 3, 4, 5};
vector<int> test4(&a[0], &a[4]);//通过两个指针之间的元素初始化vector

取出和存入数据:同指针型数组

test1[0] = 1;
int a1 = test1[1];

复制

vector<int> test11(test1);
vector<int> test12(test1.begin(),test1.begin()+3);//复制构造函数进行复制
vector<int> test13;
test13 = test1;  //等号复制

其他常见用法

int length1 = test1.size();//获得数组的长度
test1.insert(test1.begin()+3,3)//在数组第4位插入元素,使插入元素成为第3位
test1.erase(test1.begin()+3)//删除第4位的元素
test1.erase(test1.begin()+3,test1.begin()+5)//删除第4到6位的元素
test1.push_back(5);//在test的最后添加一个元素 

注意数组访问和其他操作不要越界。

https://blog.csdn.net/wkq0825/article/details/82255984​blog.csdn.net

Qvector型数组使用指南

需要包含头文件

#include<QVector>

定义方式,使用方法、复制等和vector一致

其他常见用法:相关函数名称不太一样

test1.append(5);//在test的最后添加一个元素 
test1.prepend(5);//在test的开头添加一个元素 
test1.insert(5,6);//在序号为5的位置插入元素6
test1.remove(5);//移除序号为5的元素
test1.pop_back();//删除最后一个元素
test1.pop_front();//删除第一个元素
test1.replace(5,8);//将序号为5的元素的值替换为8
test1.count();  test1.length();  test1.size();//获得数组长度
QVector常见使用方法 - 浅浅念 - 博客园​www.cnblogs.com

eigen型数组使用指南

eigen库是c++的一个外部库,需要自行下载并设置include路径。主要用于向量和矩阵的运算。eigen库是一个用于数学运算的矩阵库,程序用于数学运算时,一般要使用这个库来定义。

#include <Eigen/Dense>
using namespace Eigen

定义方式

Vector2d  a;Vector3d  b; Vector4d  c(1,2,3,4);//定义固定长度的向量,234表示长度,d表示数据类型
VectorXf d;//定义浮动长度的向量,f为数据类型
VectorXf f(5);//定义长度为5的向量

MatrixXf  e;//定义浮动长度的矩阵,可将其行或列设置为1,等同于向量(一般不这么用)

取出和存入数据:一般使用()操作符

https://blog.csdn.net/yxpandjay/article/details/80587916​blog.csdn.net Eigen库使用指南​www.jianshu.com
21d2208d33fe0a4c8b12703191d32bc9.png

以上使用中需要注意,如果无法通过[]操作符进行运算且报错"index out of range",可能是由于,非固定长度的数组使用时,如果要增加长度并赋值,需要先使用append等函数,之后才可以对对应长度使用[]访问;

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐