diff --git a/C++/C++基础/0 编写一个C++程序.md b/C++/C++基础/0 编写一个C++程序.md index af96e9ab..f04778be 100644 --- a/C++/C++基础/0 编写一个C++程序.md +++ b/C++/C++基础/0 编写一个C++程序.md @@ -27,7 +27,7 @@ mingw ## 1 C++程序构成 -### 构成 +### 函数构成 * 返回类型 * 函数名 * 形参列表 diff --git a/C++/C++基础/1 数据类型.md b/C++/C++基础/1 数据类型.md index b3fbc293..84392113 100644 --- a/C++/C++基础/1 数据类型.md +++ b/C++/C++基础/1 数据类型.md @@ -20,6 +20,7 @@ - 联合体`union` +> **关于size_t的说明**:size_t是标准C库中定义的,在64位系统中为long long unsigned int,非64位系统中为long unsigned int。使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。因为其是基于平台变化的最大支持的无符号整型。 ## 2 字面值常量 @@ -143,4 +144,4 @@ int f{3};//花括号列表初始化 * 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。 * 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。 -* 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句: \ No newline at end of file +* 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。 \ No newline at end of file diff --git a/C++/C++基础/1.2 复合类型.md b/C++/C++基础/1.2 复合类型.md index d12cb6b0..6907977a 100644 --- a/C++/C++基础/1.2 复合类型.md +++ b/C++/C++基础/1.2 复合类型.md @@ -63,7 +63,7 @@ int **p2 = &p1 ``` int arr[10];//含有10个整型的数组 int *arr[20];//含有20个整形指针的数组。指针数组 -int (*ptr)[10];指向含有是个整数的数组的指针。数组的指针(常量的指针和指针类型的常量类似) +int (*ptr)[10];指向含有10个整数的数组的指针。数组的指针(常量的指针和指针类型的常量类似) string arr[10];//含有10个string对象的数组C++11允许数组为对象类型。 ``` diff --git a/C++/C++基础/1.cpp b/C++/C++基础/1.cpp index 68b1be8f..a5b6681c 100644 --- a/C++/C++基础/1.cpp +++ b/C++/C++基础/1.cpp @@ -1,6 +1,13 @@ #include using namespace std; +class B{ +public: + int a = 1; + B():a(2){ + // a=3; + } +}; int main() { // unsigned int a =1; @@ -21,11 +28,34 @@ int main() // cout<<*i<a< + +using namespace std; + + +int main(){ + int i=0; + while(i<10){ + i++; + if(i>100){ + break; + } + } +} \ No newline at end of file diff --git a/C++/C++基础/7 自定义类型-类和结构体.md b/C++/C++基础/7 自定义类型-类和结构体.md index 89f7b9dc..796410b3 100644 --- a/C++/C++基础/7 自定义类型-类和结构体.md +++ b/C++/C++基础/7 自定义类型-类和结构体.md @@ -202,8 +202,23 @@ public * 没有基类。 * 使用花括号括起来的成员初始值列表。并用它初始化聚合类的数据成员。 +```C++ +struct Person +{ + std::string name; + int height; +}; +int main() +{ + Person person={"xiaohong",10}; + std::cout << person.name<<" "< a; array arr= {1, 2, 3, 4, 5}; diff --git a/C++/标准库/2.3 容器适配器.md b/C++/标准库/2.3 容器适配器.md index bb83c2cf..172de27b 100644 --- a/C++/标准库/2.3 容器适配器.md +++ b/C++/标准库/2.3 容器适配器.md @@ -12,7 +12,7 @@ ## 0 简介 ### 概念 -* 适配器 (adaptor) 是标准库巾的一个通用概念。容器、类和函数都有适配器。 本质上, 一个适配器是一种机制, 能使某种事物的行为看起来像另外一种事物一样。。一个容器适配器接受一种己有的容器类型, 使其行为看起来像一利1不同的类型。 +* 适配器 (adaptor) 是标准库的一个通用概念。容器、类和函数都有适配器。 本质上, 一个适配器是一种机制, 能使某种事物的行为看起来像另外一种事物一样。。一个容器适配器接受一种己有的容器类型, 使其行为看起来像一利1不同的类型。 * 添加额外操作,实现某种特殊的数据结构。 ### 容器适配器的操作 diff --git a/C++/标准库/2.3.cpp b/C++/标准库/2.3.cpp index 230037ce..e4ecffd9 100644 --- a/C++/标准库/2.3.cpp +++ b/C++/标准库/2.3.cpp @@ -21,6 +21,11 @@ int main(){ // vector vec; // 构造边的对象 + + vector a{1,2,3}; + queue b; + cout< &words){ } - int main(){ - vector n{4,2,5,2,5,6,7}; + // 所以这万一是怎么记住上一个的状态的呢? + // 查阅资料,发现这个函数是根据函数大小顺序生成下一个 + // 例如5,6,7的下一个是5,7,6 + // 但是7,6,5就没有下一个了,因为它已经是最大的排列了。 + // vector n{4,2,5,2,5,6,7}; + vector n {7,6,5}; + for(auto a :n){ + cout< 参考顺序容器部分 +* 访问元素 + * 也可以使用**迭代器**访问元素。 + * **at**会进行安全检查抛出异常。 + * **[]下标运算符**不会进行检查。 + * **back(),front()** +* 添加元素 + * 总共有6+3=9种插入方法。insert有额外的两种范围插入方法。 + * 在尾部添加元素**push_back(),emplace_back()** + * 在头部添加元素**push_front(),emplace_front()** + * 在中间添加元素insert(),emplace() + * insert方法提供了范围插入的方法。中间插入一个元素。在给定的一个迭代器之前插入一个值。中间插入多个元素。在给定的迭代器之前插入范围迭代器内的元素。 +* 删除元素 + * **back、front、push_back、push_front、pop_back、pop_front、emplace_front、emplace_back**。是一组首尾相关的插入操作。 + * **insert、emplace、at、erase**。是一组随机的操作。 +* 重构容器 + * 并非该表容器内存的大小。而是改变容器范围的大小。 ### 1.2 STL泛型算法 * string 对象也可以看作一个顺序容器,它支持随机访问迭代器,也有 begin 和 end 等成员函数。STL 中的许多算法也适用于 string 对象。下面是用 STL 算法操作 string 对象的程序示例。 @@ -30,6 +46,11 @@ int main() ## 2.1 字符串创建 * string 类有多个构造函数,用法示例如下: + * 拷贝初始化 + * 序列初始化 + * 子串初始化 + +> 这三种初始化的恶魔是,在assign、find、append、replace、insert函数中,也在使用。就如同顺序容器中的初始化方法,在顺序容器的其他的操作中也是通用的。 ```C++ string s1(); // si = "" string s2("Hello"); // s2 = "Hello" diff --git a/C++/标准库/5.cpp b/C++/标准库/5.cpp index 9891ee1d..7813df7d 100644 --- a/C++/标准库/5.cpp +++ b/C++/标准库/5.cpp @@ -4,23 +4,23 @@ #include using namespace std; -int main(){ - // istringstream s("145,5343,42,44"); - // int a; - // s>>a; - // cout< vec; string temp; - while (end_pos != string::npos) - { cout<>a; + cout<& p){ cout<<"read char x for exception"<