1、vector的数据结构类似数组,在内存中为一片连续的存储空间;
2、list的数据结构为链表,每个元素中都保存了下一个元素的地址,空间可以不连续;
3、基于两者数据结构的特点,vector的随机访问速度快,list的增删操作快;
4、以1亿个元素的分别以list与vector的方式存储来比[……]
Tag Archives: C++
STL中三大组件(容器+迭代器+算法)的最简单组合使用
1、STL全称为Standard Template Library,标准模板库,C++开发中最为常用的标准库;
2、STL有点类似于ObjC中的Foundation库,语言之间的类比有助理解,融汇贯通;
3、STL中最重要的三大组件为容器、迭代器、算法;
4、迭代器为容器与算法之间的桥梁;[……]
C++中string迭代器与reserve函数的冲突
1、迭代器做为容器与算法之间的桥梁方便了各种场景与功能的实现;
2、string类的迭代器相当于char*的指针;
3、string在被初始化或赋值后系统会分配一定大小的容量(mac下默认为22,超出后15+16*n);
4、string可通过capacity查看当前容量大小;
5、stri[……]
C++学习笔记
1、C++编译过程
1.1、预处理,编译器将C++代码中的宏、引用等预处理指定进行展开,生成.i或.ii文件;
1.2、编译,编译器将展开后的文件进行编译生成汇编文件.s;
1.3、汇编,汇编器将汇编文件汇编生成链接文件.o或.obj;
1.4、链接,链接器将链接文件与库文件或第三方文件链接生成二进制文件,即可执行文件;
1.5、第一个C++程序
1 2 3 4 5 6 7 8 | #include using namespace std; int main(){ cout << "Hello Cpp!!" << endl; return 0; } |
2、变量名三条定律
2.1、变量名只能是下划线、字母、数字;
2.2、首字母只能是下划线、字母;
2.3、不能是保留字/关键字;
3、C++常用数据类型
3.1、int –> 32位 -2147483648~+2147483647;
3.2、short int –> 16位 -32768~+32767;
3.3、long int –> 32位 -2147483648~+2147483647;
3.4、long long int –> 64位 -9223372036854775808 ~ +9223372036854775807;
3.5、float 32位 –> -3.4E-38~+3.4E+38;
3.6、double 64位 –> -1.7E-308~+1.7E+308;
3.7、char 8位 –> -128~+127;
3.8、关于精度的一个示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include #include using namespace std; int main(){ int i = 1234567890; float f = 1234567890123456789; double d = 1234567890123456789; long double ld = 1234567890123456789; cout << setprecision(20); cout << i << "n" << f << "n" << d << "n" << ld << endl; return 0; } |
1234567890
1234567939550609408
1234567890123456768
1234567890123456789
Program ended with exit code: 0
4、经典冒泡排序C++实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include using namespace std; int main() { // 数组、数组长度、循环次数 int array[] = {128, 1, 11, 3, 33, 71, 2, 31, 4, 25, 61}; int len = sizeof(array) / sizeof(array[0]); int loop_count = len - 1; // 冒泡次数循环 for (int i = 0; i < loop_count; i++){ // 单次冒泡比较循环 for (int j = 0; j < loop_count - i; j++){ if (array[j] > array[j+1]){ array[j] = array[j] + array[j+1]; array[j+1] = array[j] - array[j+1]; array[j] = array[j] - array[j+1]; } } } for (int i = 0; i < len; i++){ cout << array[i] << endl; } return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include using namespace std; int main() { // 数组、数组长度、循环次数(最后一个数不需要比较) int array[] = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9}; int len = sizeof(array) / sizeof(array[0]); int loop_count = len - 1; for (int i = 0; i < loop_count; i++){ // 调换前假设当前第一个为最小数 int min_index = i; // 从第1个开始循环,可减少一次循环 for (int j = i + 1; j < len; j++){ if (array[j] < array[min_index]){ min_index = j; } } // 如果第一个为最小数,不交换 if (i != min_index){ array[i] = array[i] + array[min_index]; array[min_index] = array[i] - array[min_index]; array[i] = array[i] - array[min_index]; } } // 重新打印数组中的值(排序后) for (int i = 0; i < len; i++){ cout << array[i] << " "; } return 0; } |
[……]