C++入门(算法竞赛类)

文章目录

个人主页:星轨初途

个人专栏:C语言数据结构C++学习(竞赛类)

前言

嗨(。◕ˇ∀ˇ◕)!我们又见面啦!本专栏是为了学完C语言后转换为C++编程语言的学习,所以本专栏C++中和C语言重合的部分就不进行讲解啦!本专栏主要偏向于C++竞赛类!

欢迎大家来一起进步啦!

一、工具的安装

在算法竞赛中,最常用的工具就是dev-C++,他比较轻便,专门为了竞赛准备

下载链接Dev-C++

文章教程:下载及使用过程

二、第一个C++程序

在学习C++之前,我们需知道C++兼容C,所以C++和C用法有很多相同

1、基础程序

cpp 复制代码
#include <iostream>        //头文件
using namespace std;       //使用std的名字空间

int main()                 //main函数
{
    cout << "hello world!" << endl;  //输出: 在屏幕打印"hello world!"
    return 0;
}

可能大家对此有所疑惑,下面为大家讲解

2、头文件

C++库函数相关头文件:C++头文件网站

注意

  1. 在C语言中头文件的扩展名是.h;C++中,对老式C的头文件保留.h扩展名,但C++自身的头文件无扩展名。

    C语言头文件参考:https://zh.cppreference.com/w/c/header

  2. 部分C的头文件被转换为C++头文件:这类文件会去掉.h扩展名,并在文件名前加前缀c(表示来自C语言);例如:C语言的数学头文件math.h,在C++中对应cmath

    需注意:C语言版本与C++版本的头文件有时内容相同,有时新版本会做修改。

头文件的命名约定:

头文件类型 约定 实例 说明
C++旧式风格 以.h结尾 <iostream.h> C++程序可以使用,一些新的IDE可能不再支持
C旧式风格 以.h结尾 <math.h> C、C++程序可以使用
C++新式风格 没有扩展名 <iostream> C++程序可以使用,使用namespace std
转换后的C 加上前缀,没有扩展名 <cmath> C++程序可以使用,可能包含不是C的特性

3、初识cin和cout

cout << "hello world!" << endl; 这句代码在上面的程序中是最重要的代码,其他所有的

代码都是为了编写这句代码

(1)核心流对象:cin & cout

  • 二者是C++的全局流对象 ,用于控制台(键盘/屏幕)的输入输出:
    • cin:负责从键盘输入数据
    • cout:负责向屏幕输出数据,功能是将双引号内的内容(或变量值)打印到标准输出设备(屏幕),双引号内的内容可根据需求替换。

(2)关键操作符

  1. endl

    • 是C++的特殊操作符,作用是换行 + 刷新缓冲区
    • 使用时必须包含头文件 <iostream>
  2. 流运算符(<< / >>)

    • <<:称为流插入运算符 ,需与 cout 配合使用(用于输出);
    • >>:称为流提取运算符 ,需与 cin 配合使用(用于输入);
    • 两者功能不同,不可混用。

(3)C++输入输出的优势

相较于C语言的 printf/scanf,C++的 cin/cout 更便捷:

  • 无需手动控制格式(如指定%d/%s等);
  • 自动识别变量类型(后续学习中体会)。

4、名字空间

上述代码using namespace std;

这句代码的意思是:使用名字空间 std (名字空间也叫命名空间)

(1)核心作用

作用是隔离变量、函数、类的名称,解决同名冲突问题(比如多个"张三"分属不同空间,就不会混淆)。

(2)std名字空间

std是C++标准库的专属名字空间------标准库的所有内容(如cincoutendl)都被放在这个空间里。

(3)使用std的两种方式

  1. 全局暴露(简单直接)

    using namespace std;,表示直接使用std空间里的所有内容,后续用cin/cout等无需额外前缀。

  2. 局部指定(精准可控)

    不写全局暴露语句,而是在使用时加std::前缀(如std::cout << "hello";),仅调用std中需要的内容。
    注意

    采用 std::cout 这种写法,如果频繁使⽤,在算法竞赛中⽐较⿇烦,耽搁时间。
    但是在企业中做软件开发基本上都这样写的,这样写更好的避免名字冲突的问题,后期在慢慢琢磨。

三、数据类型、变量和常量、算术操作符、赋值操作符、类型转换、单目操作符

骗你们的,我们已经学习过C语言,这里C++和C语言操作一致,这里就不做讲解啦!

但还要注意C++中cout输出时不能通过空格来输出空格

比如

c 复制代码
#include <iostream>        
using namespace std;      
int main()                 
{
	int a=0;
    cout<<a   <<a<<endl;
    return 0;
}

我们发现无法空格

但是用字符来形成空格就行啦!(与C语言中printf通用)

c 复制代码
#include <iostream>        
using namespace std;      
int main()                 
{
	int a=0;
    cout<<a<<" "<<a<<endl;
    return 0;
}

四、结束语

嗨ヾ(o´∀`o)ノ !本篇到这里就结束啦!主要讲解了C++的初识,和C一致的用法就简单提一下,相信大家都能有所收获!欢迎大家积极在评论区进行询问和建议,感谢大家的支持啦!下一篇我们将讲解C++的输入输出,欢迎大家来了解!

相关推荐
Bona Sun1 小时前
单片机手搓掌上游戏机(十三)—pico运行fc模拟器之硬件准备
c语言·c++·单片机·游戏机
Bona Sun1 小时前
单片机手搓掌上游戏机(十八)—pico运行fc模拟器之更大屏幕
c语言·c++·单片机·游戏机
chenyuhao20241 小时前
MySQL索引特性
开发语言·数据库·c++·后端·mysql
prog_61031 小时前
【笔记】和各大AI语言模型写项目——手搓SDN后得到的经验
人工智能·笔记·语言模型
灰灰勇闯IT2 小时前
KMP算法在鸿蒙系统中的应用:从字符串匹配到高效系统级开发(附实战代码)
算法·华为·harmonyos
小龙报2 小时前
【算法通关指南:数据结构和算法篇 】队列相关算法题:3.海港
数据结构·c++·算法·贪心算法·创业创新·学习方法·visual studio
csuzhucong2 小时前
一阶魔方、一阶金字塔魔方、一阶五魔方
算法
五花就是菜2 小时前
P12906 [NERC 2020] Guide 题解
算法·深度优先·图论
辞旧 lekkk2 小时前
【c++】封装红黑树实现mymap和myset
c++·学习·算法·萌新