# 数组

# 1. C/C++

# 1. 固定数组

typeName name [ const int ]; 例如:

int nums[10];//创建一个整数数组,里面包含10个整数

# 2. vector 创建动态数组

例如:

vector<int> nums(10);//创建一个动态数组,里面初始化10个整数

# size()

返回数组的大小

# resize()

更改预创建的大小(可以直接使用的内存空间

# capacity()

返回数组预留的总大小

# reserve()

更改预留的大小(不可以直接使用

# empty()

数组是否为空, 数组为空返回true, 不为空返回false

# clear()

清空数组

# operator[unsigned int pos]

访问索引pos指向的元素,不会做越界检查

# at(unsigned int pos)

访问索引pos指向的元素,会做越界检查,越界抛出异常 对于安全性而言,应该使用at(),效率而言,应该使用[]

# push_back()

将元素 拷贝 到数组的末尾

# emplace_back()

将元素 加入 到数组的末尾

class Node{
   int i;
};
nums.push_back({1});//调用构造函数
Node n = {1};
nums.emplace_back(n);//不调用构造函数,要传入被创建过的变量

效率上,如果已经创建过元素,应该使用emplace_back(),反之,使用push_back()

# pop_back()

删除数组最后一个元素

# front()

获取数组首元素的引用

# begin()

返回指向数组首元素的迭代器

# end()

返回指向数组末元素后的迭代器

# rbegin()

返回指向数组末元素的迭代器

# rend()

返回指向数组首元素前的迭代器

# erase

删除元素

// erase(iter_begin,iter_end) // 删除区间[iter_begin, iter_end)的元素
// erase(iter_where) // 删除iter_where指向的元素
nums.erase(nums.begin(),nums.end());//删除所有元素
nums.erase(nums.begin();//删除首元素

# insert

插入元素

//insert(iter_where, element) // 在iter_where指向的位置插入 element
//insert(iter_where, other_iter_begin, other_iter_end) // 在iter_where指向的位置插入其他容器中,区间[iter_begin, iter_end)的所有元素
//insert(iter_where, init_list) // 在iter_where指向的位置插入初始化列表
nums.insert(nums.begin(),1);//在数组首位置插入1
vector<int> other = {1,2,3};
nums.insert(nums.begin(),other.begin(),other.end());//在数组首位置插入other
nums.insert(nums.begin(),{1,2,3});//在数组首位置,插入{1,2,3}

# emplace(iter_where, element)

在iter_where指向的位置插入 element

nums.emplace(nums.begin(),2);//在首位置插入2

插入单个元素时,效率上emplace更快

# 2. Java

# 1. 固定数组

typename name[size] = new typename[size]; typename [size] name = new typename[size]; name.length 数组长度属性

# 2. ArrayList

动态数组没有(初始化列表)的初始化方式

List<Integer>[] nums = new List[n];
Arrays.setAll(num,i -> new ArrayList<>());
ArrayList<Integer> nums = new ArrayList<>();
ArrayList<List<Inteeger>> nums new ArrayList<>();

# size()

数组大小

# clear()

清空数组中的全部元素

# contains()

查看元素是否存在数组中

# get(int index)

访问索引index指向的元素

# getFirst()

访问首元素

# getLast()

访问尾元素

# add(int index=arr.size(),element)

在索引index的位置添加(插入)一个元素

# set(int index,element)

修改索引index指向的元素

# remove(int index)

删除索引index指向元素

# removeAll(Collections<? extends String> c)

删除在Collections中存在的全部元素

# removeFirst()

删除首元素

# removeLast()

删除末元素

# subList(int start,int len)

返回子数组

# 3.LinkedList

动态数组(底层是链表)

LinkList<Integer> nums = new LinkList<>();

# size()

数组大小

# clear()

清空数组中的全部元素

# contains()

判断是否有某个元素

# get(int index)

获取索引index指向的元素

# add(int index=arr.size(),element)

在索引的位置添加一个元素

# set(int index,element)

设置指定位置的元素

# remove(int index)

删除指定位置的元素

# 3. Python

在Python中数组又叫列表 在Python中负数索引代表从最后一个元素开始如1指向数组最后一个元素

# list()

# []

创建列表

nums = []
nums = list()
#他们都是创建列表

# 操作符del

删除元素

del nums[1]#删除nums[1]这个元素

# 操作符+

拼接连个列表

[1,2] + [2,3]
#结果就是[1,2,2,3]

# 操作符in

字面意思《在》

for i in nums:
print(i)
#这个会遍历nums
i in nums:
#如果i在nums中,表达式为True

# list.append()

在末尾添加元素

# len()

返回数组的元素数量

# list.count()

返回元素在数组中出现的次数

# list.pop(index=-1)

删除列表一个元素,默认值为1

# list.sort()

对列表进行排序

# list.clear()

清空列表

# list.reverse()

反转列表

# list.copy()

复制列表