vector 容器:
/* 创建vector,命名为values */
vector<double> values (20); // 也可以不规定空间:vector<double> values
vector<int > a(5,1); //定义了5个整型元素的向量,且给出每个元素的初值为1
/* 赋值 */
values[0] = 3.14159;
values[1] = 5.0;
values[2] = 2.0*values[0]*values[1];
/* 取出元素 */
values.front(); // 取出最后一个元素
values.back(); // 取出第一个元素
values.at(values.size()-1); // 取出最后一个元素 (访问指定位置元素)
values.end()-1; // 取出最后一个元素
values.rbegin(); // 取出最后一个元素
/* 插入 */
values.insert(values.begin(), 100); // 在指定位置插入值100, insert (位置迭代器)
values.push_back(3); // 在末尾插入值3
/* 删除 */
values.pop_back(); // 删除末尾元素
values.erase(values.begin()); // 删除指定位置元素, erase (位置迭代器)
values.erase(values.begin(), values.end()); // 清空数组指定范围
values.clear(); // 清空数组
/* 取出指针 */
values.begin(); // 返回指向第一个元素的指针
values.end(); //函数返回一个指向当前vector末尾元素的下一位置的迭代器.要访问末尾元素,需要先将此迭代器减1。
auto pData = values.data(); // 返回一个指向数组的指针,pData 是 double* 类型
/* 遍历 */
for (auto value : values){
......
}
/*
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据
*/
题目:
c++ vector函数:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
digits.insert(digits.begin(), 0); // 首位插入0,预备第二位进位溢出
digits.back() = digits.back()+1; // 末位值+1
for(int i=digits.size()-1;i>=0;i--){ // 从右向左遍历
if (digits[i]==10 ){ // 进位
digits[i]=0;
digits[i-1]++;
}
}
if(digits[0]==0){
digits.erase(digits.begin()); // 首位删除0
}
return digits;
}
};
数学加法:
c++
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for(int i=digits.size()-1; i>=0; i--){
if(digits[i]==9){
digits[i] = 0;
}else{
digits[i]++;
return digits;
}
}
// 循环结束还没 return, 说明每一位都进位了,则digits长度+1,首位为1
digits.insert(digits.begin(),1); // 首位插入1
return digits;
}
};
python
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
for i in range(len(digits)-1,-1,-1): # 左闭右开区间[len,-1) 才是len~0
if digits[i]==9:
digits[i] = 0
else:
digits[i]+=1 # python 没有a++
return digits
digits=[1]+digits # 首位插入1
return digits