# 数组
# 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()
复制列表