C++学习笔记二
- 迭代器
- bitset
- 数组、指针
迭代器
学过python的人应该知道啥是迭代器
C++中的迭代器是一种检查容器内的元素并且进行遍历的数据结构
- 类型
vector<int>::iterator iter;
定义了一个迭代器。
-
begin
容器使用该函数返回一个从前到后的迭代器 -
end
容器使用该函数返回最后一个元素后面的元素
若容器为空,则v.begin() == v.end()
-
自增操作
使用*iter
操作获取迭代器指向的元素(不就是指针)
使用++iter
将iter指向下一个元素(不就是指针) -
const_iterator
不能重写的迭代器,即它不能改变它指向的元素的值 -
const iterator
不能改变自己指向的元素的迭代器
其实它就是指针换了种名目而已
bitset
需要包含头文件bitset
使用bitset
数据类型来对二进制数位进行操作
使用方法:
bitset<32> bitvec;
bitset<32> b(u); // b是u的一个副本
bitset<32> b(s, pos, n); // b是s中从pos开始的n个位的副本
就是设置一个大小为32的二进制对象
例如,bitset<8> b = 8
,输出b
,结果为00001000
bitset<8> b(string("11111111"))
,输出结果为11111111
注意,0为低位
操作
bitset支持所有的位操作
以下是常用的操作:
b.any() // 检查是否有1
b.none() // 检查是否不存在1
b.count() // 检查置为1的个数
b.size() // b的二进制位的个数
b.test(pos) // b的第pos位是否为1
b.set() // 设为-1
b.set(pos) // b的第pos位设1
b.reset() // 用法类似set,置为0
b.flip() // 用法与reset类似,取反
b.to_ulong() // 返回一个unsighed long 值
数组、指针
动态数组
C++使用new
与delete
来实现malloc
与free
的功能
new
用法举例
int *a = new int[10]; // 未初始化
int *b = new int[10](); // 已初始化
delete
用法举例
delete [] a; // 释放数组空间a
delete a; // 释放a指向的一个元素大小的空间
使用string.c_str
可以返回C风格的字符串
数组与Vector
C++可以使用数组初始化Vector对象
const size_t arrSize = 6;
int arr[arrSize] = {
0, 1, 2, 3, 4, 5};
vector<int> vec(arr, arr + arrSize);
指针
略
不会吧不会吧,不会有人连指针都不会吧