安装步骤
注意:新手别安装
Visual Studio
我后面使用,很多头文件都找不到,可能是不会用。可以先安装MinGW
。
MinGW安装步骤
MinGW下载地址
测试:cmd到控制台,输入:
gcc -v
Clion配置MinGW :
在设置中找到:File | Settings | Build, Execution, Deployment | Toolchains
注意:如果已经下载了Visual Studio
系统可能默认使用这个执行链(SDK)可以更改一下默认使用(如下图)
,或者在刚刚的页面直接删除就好,后面需要再添加回来。
注意:全局修改,不要在一个项目中修改。
注意:两种方式用一种就好。
如果报上面的错误,可以把文件编码改成gbk。哪个文件报错改哪个。
C++官方文档由微软提供。
官方文档地址
比较详细的英文文档
比较详细的中文文档
#include
int main(){
std::cout<<"Hello world"<<std::endl;
return 0;
}
//头文件,每个人c++程序都有
#include
// 表示默认使用c++提供的标准库。这个标准库以std开头,当函数、对象同名时用命名空间加以区分
using namespace std;
int main() {
// 输出Hello, World!,结束后换行
cout << "Hello, World!" << endl;
//输出,不换行
cout << "1";
cout << "2";
return 0;
}
输入:cin>>变量。空格或者换行结束输入。
输出:cout<<变量;
#include
using namespace std;
int main() {
//输入:先定义变量,再将输入的内容传给变量
int i;
float f;
double d;
string s;
cin >> i;
cin >> f;
cin >> d;
cin >> s;
//输出
cout << "输出" << i << f << d << s;
return 0;
}
头文件可以将一些函数的声明与实现分离,当需要调用函数时,只需要导入头文件。
注意:如果源文件需要用到一些库,在自定义的头文件中导入其他头文件
//导入标准库和一些三方库
#include "iostream"
using namespace std;
//函数定义
int max(int a,int b);
//
// Created by wuyuj on 2022/8/20.
//
//这里需要将源文件与头文件进行绑定。
#include "max.h"
//实现函数
int max(int a, int b) {
cout << "获取最大值:" << endl;
return a > b ? a : b;
}
注意:自定义(三方)的头文件是用 “” 引号声明的。官方的是用 <> 尖括号
//这个头文件已经包含了:#include "iostream" \n using namespace std;
#include "max.h"
int main() {
//直接调用函数。
cout << max(2, 1) << endl;
return 0;
}
参考微软C++文档
类别 | 标头 |
---|---|
算法 | , ,
|
原子操作 | 11 |
C 库包装器 | 、 11 a b、、、
11、、 11、
b
、11 a b、
11 a b、
、11、11 a b、
11、 、
|
概念 | 20 |
容器 | |
序列容器 | 11、、
11、、 、
|
有序关联容器 | ,
|
无序关联容器 | 11、 11 |
容器适配器 | ,
|
容器视图 | 20 |
错误和异常处理 | 、 、 、
11 |
常规实用工具 | 17, 20, , ,
17,
, 17,
11 , 11
, 11, 11, 11, 11, 11, 11, 11, 11,
17 |
I/O 和格式设置 | 11、、
17、 、、 、
c、 20 |
迭代器 |
|
语言支持 | 、 、 11 a、 20、20、
20、 、
11
、 、、、 、
20 |
本地化 | 、 11 a、 、、
|
数学和数字 | 20, 11, ,
,
11, 11, 11,
|
内存管理 | 、、
17、 、 11 |
多线程处理 | 11, 11, 11, 11, 14,
11 |
范围 | 20 |
正则表达式 | 11 |
字符串和字符数据 | 17, ,
11, ,
17
|
时间 | 11,
|
点击函数查看详解
名称 | 说明 |
---|---|
adjacent_find |
搜索相等或满足指定条件的两个相邻元素。 |
all_of |
当给定范围中的每个元素均满足条件时返回 true 。 |
any_of |
当指定元素范围中至少有一个元素满足条件时返回 true 。 |
binary_search |
测试已排序的范围中是否有等于指定值的元素,或在二元谓词指定的意义上与指定值等效的元素。 |
clamp |
|
copy |
将一个源范围中的元素值分配到目标范围,循环访问元素的源序列并将它们分配在一个向前方向的新位置。 |
copy_backward |
将一个源范围中的元素值分配到目标范围,循环访问元素的源序列并将它们分配在一个向后方向的新位置。 |
copy_if |
复制给定范围中对于指定条件为 true 的所有元素。 |
copy_n |
复制指定数量的元素。 |
count |
返回范围中其值与指定值匹配的元素的数量。 |
count_if |
返回范围中其值与指定条件匹配的元素的数量。 |
equal |
逐个元素比较两个范围是否相等或是否在二元谓词指定的意义上等效。 |
equal_range |
在排序的范围中查找符合以下条件的位置对:第一个位置小于或等效于指定元素的位置,第二个位置大于此元素位置,等效意义或用于在序列中建立位置的排序可通过二元谓词指定。 |
fill |
将相同的新值分配给指定范围中的每个元素。 |
fill_n |
将新值分配给以特定元素开始的范围中的指定数量的元素。 |
find |
在范围中找到具有指定值的元素的第一个匹配项位置。 |
find_end |
在范围中查找与指定序列相同的最后一个序列,或在二元谓词指定的意义上等效的最后一个序列。 |
find_first_of |
在目标范围中搜索若干值中任意值的第一个匹配项,或搜索在二元谓词指定的意义上等效于指定元素集的若干元素中任意元素的第一个匹配项。 |
find_if |
在范围中找到满足指定条件的元素的第一个匹配项位置。 |
find_if_not |
返回指示的范围中不满足条件的第一个元素。 |
for_each |
将指定的函数对象按向前顺序应用于范围中的每个元素并返回此函数对象。 |
for_each_n |
|
generate |
将函数对象生成的值分配给范围中的每个元素。 |
generate_n |
将函数对象生成的值分配给范围中指定数量的元素,并返回到超出最后一个分配值的下一位置。 |
includes |
测试一个排序的范围是否包含另一排序范围中的所有元素,其中元素之间的排序或等效条件可通过二元谓词指定。 |
inplace_merge |
将两个连续的排序范围中的元素合并为一个排序范围,其中排序条件可通过二元谓词指定。 |
is_heap |
如果指定范围中的元素形成堆,则返回 true 。 |
is_heap_until |
如果指定范围形成直到最后一个元素的堆,则返回 true 。 |
is_partitioned |
如果给定范围中对某个条件测试为 true 的所有元素在测试为 true 的所有元素之前,则返回 false 。 |
is_permutation |
确定给定范围的元素是否形成有效排列。 |
is_sorted |
如果指定范围中的元素按顺序排序,则返回 true 。 |
is_sorted_until |
如果指定范围中的元素按顺序排序,则返回 true 。 |
iter_swap |
交换由一对指定迭代器引用的两个值。 |
lexicographical_compare |
逐个元素比较两个序列以确定其中的较小序列。 |
lower_bound |
在排序的范围中查找其值大于或等效于指定值的第一个元素的位置,其中排序条件可通过二元谓词指定。 |
make_heap |
将指定范围中的元素转换到第一个元素是最大元素的堆中,其中排序条件可通过二元谓词指定。 |
max |
比较两个对象并返回较大对象,其中排序条件可通过二元谓词指定。 |
max_element |
在指定范围中查找最大元素的第一个匹配项,其中排序条件可通过二元谓词指定。 |
merge |
将两个排序的源范围中的所有元素合并为一个排序的目标范围,其中排序条件可通过二元谓词指定。 |
min |
比较两个对象并返回较小对象,其中排序条件可通过二元谓词指定。 |
min_element |
在指定范围中查找最小元素的第一个匹配项,其中排序条件可通过二元谓词指定。 |
minmax |
比较两个输入参数,并按最小到最大的顺序将它们作为参数对返回。 |
minmax_element |
在一次调用中执行由 min_element 和 max_element 执行的操作。 |
mismatch |
逐个元素比较两个范围是否相等或是否在二元谓词指定的意义上等效,并找到出现不同的第一个位置。 |
|
移动与指定范围关联的元素。 |
move_backward |
将一个迭代器的元素移动到另一迭代器。 移动从指定范围的最后一个元素开始,并在此范围的第一个元素结束。 |
next_permutation |
重新排序范围中的元素,以便使用按字典顺序的下一个更大排列(如果有)替换原有排序,其中“下一个”的意义可通过二元谓词指定。 |
none_of |
当给定范围中没有元素满足条件时返回 true 。 |
nth_element |
对一系列元素进行分区,正确定位区域中序列的第 n 个元素,以便其前面的所有元素都小于或等于它,并且序列中之后的所有元素都大于或等于它。 |
partial_sort |
将范围中指定数量的较小元素按非降序顺序排列,或根据二元谓词指定的排序条件排列。 |
partial_sort_copy |
将源范围中的元素复制到目标范围,其中源元素按降序或二元谓词指定的其他顺序排序。 |
partition |
将范围中的元素分为两个不相交的集,满足一元谓词的元素在不满足一元谓词的元素之前。 |
partition_copy |
将条件为 true 的元素复制到一个目标,将条件为 false 的元素复制到另一目标。 元素必须来自于指定范围。 |
partition_point |
返回给定范围中不满足条件的第一个元素。 元素经过排序,满足条件的元素在不满足条件的元素之前。 |
pop_heap |
移除从堆顶到范围中倒数第二个位置之间的最大元素,然后将剩余元素形成新堆。 |
prev_permutation |
重新排序范围中的元素,以便使用按字典顺序的下一个更大排列(如果有)替换原有排序,其中“下一个”的意义可通过二元谓词指定。 |
push_heap |
将范围末尾的元素添加到包括范围中前面元素的现有堆中。 |
random_shuffle |
将范围中 N 个元素的序列重新排序为随机 N! 种序列中的 可能排列之一。 |
remove |
从给定范围中消除指定值,而不影响剩余元素的顺序,并返回不包含指定值的新范围的末尾。 |
remove_copy |
将源范围中的元素复制到目标范围(不复制具有指定值的元素),而不影响剩余元素的顺序,并返回新目标范围的末尾。 |
remove_copy_if |
将源范围中的元素复制到目标范围(不复制满足谓词的元素),而不影响剩余元素的顺序,并返回新目标范围的末尾。 |
remove_if |
从给定范围中消除满足谓词的元素,而不影响剩余元素的顺序,并返回不包含指定值的新范围的末尾。 |
replace |
检查范围中的每个元素,并替换与指定值匹配的元素。 |
replace_copy |
检查源范围中的每个元素,并替换与指定值匹配的元素,同时将结果复制到新的目标范围。 |
replace_copy_if |
检查源范围中的每个元素,并替换满足指定谓词的元素,同时将结果复制到新的目标范围。 |
replace_if |
检查范围中的每个元素,并替换满足指定谓词的元素。 |
reverse |
反转范围中元素的顺序。 |
reverse_copy |
反转源范围中元素的顺序,同时将这些元素复制到目标范围 |
rotate |
交换两个相邻范围中的元素。 |
rotate_copy |
交换源范围中两个相邻范围内的元素,并将结果复制到目标范围。 |
sample |
|
search |
在目标范围中搜索其元素与给定序列中的元素相等或在二元谓词指定的意义上等效于给定序列中的元素的序列的第一个匹配项。 |
search_n |
在范围中搜索具有特定值或按二元谓词的指定与此值相关的指定数量的元素。 |
set_difference |
将属于一个排序的源范围、但不属于另一排序的源范围的所有元素相并到一个排序的目标范围,其中排序条件可通过二元谓词指定。 |
set_intersection |
将属于两个排序的源范围的所有元素相并为一个排序的目标范围,其中排序条件可通过二元谓词指定。 |
set_symmetric_difference |
将属于一个而不是两个排序的源范围的所有元素相并为一个排序的目标范围,其中排序条件可通过二元谓词指定。 |
set_union |
将至少属于两个排序的源范围之一的所有元素相并为一个排序的目标范围,其中排序条件可通过二元谓词指定。 |
sort |
将指定范围中的元素按非降序顺序排列,或根据二元谓词指定的排序条件排列。 |
shuffle |
使用随机数生成器重新排列给定范围中的元素。 |
sort_heap |
将堆转换为排序的范围。 |
stable_partition |
将范围中的元素分为两个不相交的集,满足一元谓词的元素在不满足一元谓词的元素之前,并保留等效元素的相对顺序。 |
stable_sort |
将指定范围中的元素按非降序顺序排列,或根据二元谓词指定的排序条件排列,并保留等效元素的相对顺序。 |
swap |
在两种类型的对象之间交换元素值,将第一个对象的内容分配给第二个对象,将第二个对象的内容分配给第一个对象。 |
swap_ranges |
将一个范围中的元素与另一大小相等的范围中的元素交换。 |
transform |
将指定的函数对象应用于源范围中的每个元素或两个源范围中的元素对,并将函数对象的返回值复制到目标范围。 |
unique |
移除指定范围中彼此相邻的重复元素。 |
unique_copy |
将源范围中的元素复制到目标范围,彼此相邻的重复元素除外。 |
upper_bound |
在排序的范围中查找其值大于指定值的第一个元素的位置,其中排序条件可通过二元谓词指定。 |