赞
踩
双指针:主要用来遍历数组 若两指针指向相同数组且遍历方向相同且不相交,即为滑动窗口,若遍历方向相反则将数组覆盖,可用来进行搜索
指针与常量:
int x
int *p1=&x; *p1为一个类型是int的指针,获取变量x的地址。指针可以被修改,值也可以被修改
const int *p2=&x; const作用在int上而非指针p2上,因此指针可被修改而值不可修改
int * const p3=&x; const作用在p3上则指针不可改变而值可被修改
const int * const p4=&x; 指针和值都不可被修改
指针函数与常量:
addition 是指针函数,即代码最终不是return 0,而是返回一个指针
int* addition(int a, int b) {
int* sum = new int(a + b);//分配内存
return sum; //函数最终返回的是指针sum
}
minus是函数指针,指向函数的指针
合并两个数组:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int pos = m-- + n-- - 1;
while (m >= 0 && n >= 0) {
nums1[pos--] = nums1[m] > nums2[n]? nums1[m--]: nums2[n--];
}
while (n >= 0) {
nums1[pos--] = nums2[n--];
}
}
将两个长度分别为m和n的数组,将两数组合并到第一个数组中使第一个数组长度扩展到m+n,相对原来多出的n位用0填补,则不需要额外再开辟一个全新的空间来合并。
快慢指针:
给定一个链表,如果有环路,找出环路的起始点
输入一个链表,输出是一个链表节点,如果没有环路,返回一个空指针;如果有环路,给定两个指针,起始位置在链表开头,前进步数设为不同,若存在环路,肯定会有相遇问题,当第一次相遇时,将快指针重新移动到表头,并让两指针都前进一步,放第二次相遇时的节点即为环路的开始点
常用STL库
结构体:
定义:定义时可先定义结构体类型再单独进行变量定义;也可紧跟在结构体类型说明之后进行定义;也可在说明一个无名结构的同时直接进行定义;还可使用new动态创建结构体变量,但创建时必须是结构体指针类型,创建使用后要有delete
结构体初始化方法:
1.利用结构体自带的默认构造函数
2.利用带参数的构造函数
3.利用默认无参的构造函数
结构体嵌套:
struct Costs
{
double wholesale;
double retail;
};
struct Item
{
string partNum;
string description;
Costs pricing;
}widget;
结构体Costs嵌套在结构体Item中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。