首页 > 其他分享 >cppreference 速通指北

cppreference 速通指北

时间:2024-03-28 21:13:53浏览次数:23  
标签:... 通指 indent IO int global indenter cppreference

本文将简要介绍 cppreference 的 cpp 部分中,较为古典且常用的部分

同时,本文也尽量包含部分在特定场景中较为实用的内容

注意:许多较为现代的,或者更多应用于项目的内容并未提及,请自行查找

# 容器库

在阅读以下容器的相关页面时,可以留心 迭代器 概念:可以将其理解为包装过的指针

本部分包含了若干容器,以下是较为常用的容器,按高频到低频(主观)排序:

# vector

可以搜索一下 vector 的底层实现方法

# set(及 multiset)

可以重点关注 .lower_bound(...) 等成员函数,及迭代器的用法

# map

可以关注 元素的插入删除机制 以及 operator[]

# deque

可以常数时间下标访问,但是内存不连续

# priority_queue

可以了解如何修改或自定义比较函数,例如 priority_queue<T, vector<T>, greater<T>>

# unordered_map

可以学习哈希表相关知识

# array

可以当作部分 pair 和 tuple 的替用品,或者替代原生数组

# 一些其他容器

# bitset

# basic_string

另外,可以参阅 C 的字符串函数

# IO

# cpp 风格 IO

可以了解 stringstream 类,以及 输入/输出操纵符

# C 风格 IO

# fopen

# freopen

# sscanf

# sprintf

# 算法库

# sort

# unique

# reverse

# shuffle

# nth_element

# lower_bound

# next_permutation



本部分为较为常用的语法糖或语法特性

#

可以了解静态成员,构造及析构函数,并使用这些特性(例如分段计时,记录 dfs 深度等)

示例:

int global_indent = 0;

struct indenter{
	indenter() { global_indent++; }
	~indenter() { global_indent--; }
};

void doIndent() {
	for (i = global_indent; i; i--) { printf("  "); }
}

void dfs(...) {
	indenter _ind;
	
	doIndent(); fprintf(stderr, "log...\n");

	for (...) dfs(...);
}

# 基于范围的 for 循环

示例:

vector <int> vec;
for (...) vec.push_back(...);
for (auto it: vec) {...}

# lambda 表达式

推荐找点实例来看,在一定程度上能简化代码。注意效率可能较低

示例:

sort(a, a + n, [] (int p, int q) { return p > q; });
queue <int> que;
auto doPush = [&] (int ff) {
	dis[ff] = ...;
	que.push(ff);
};
doPush(1);
while (!que.empty()) {
	for (...) {
		doPush(...);
	}
}


本部分较为不常用,简要了解即可

# 正则表达式库

正则表达式方言较多,可去网上学习一下

使用起来略麻烦,但是比 以流为基础的 IO(scanf 类)强

# 工具库/动态内存管理

较为现代的指针

# shared_ptr

# unique_ptr

# 工具库/程序支持工具

# abort

# exit

# atexit

# system

标签:...,通指,indent,IO,int,global,indenter,cppreference
From: https://www.cnblogs.com/aliasRevir/p/18102604/cppreference-speedrun

相关文章

  • auto{x}与auto(x)---一位中国小伙为cppreference作出的贡献
      C++作为一门静态类型语言,是需要程序员声明变量类型的。然而来到了C++11,auto的诞生使得变量声明变得及为方便,尤其是对于比较长的模板类型,auto一定程度上为代码编写者减轻了负担。到了C++23,突然来了个新特性:auto{x}/auto(x),这又是个什么东西,它的motivation又是什么?   首先......
  • 码上放心-码上传接口开通指南
    码上放心-码上传接口开通指南(相关技术问题可进群咨询,钉钉群号:67685003096)返回文档平台技术对接支持阿里钉钉群:群号:67685003096一、什么是码上传服务?向有开发需求的经营(批发/物流)企业提供码上传接口开发包,企业通过码上接口实现码上放心平台与企业ERP、WMS等信息系统数据对接......
  • Go 中普通指针、unsafe.Pointer 与 uintptr 之间的关系和指针运算
    C语言指针运算指针运算就是对指针类型的变量做常规数学运算,例如加减操作,实现地址的偏移。指针运算在C语言中是原生支持的,可以直接在指针变量上做加减,例如:#include<stdio.h>constintMAX=3;intmain(){intvar[]={10,100,200};inti,*ptr;/*......
  • 什么时候用智能指针,什么时候用普通指针
    在C++中,使用智能指针可以更方便地管理动态内存,避免了手动释放内存的繁琐操作,提高了代码的可读性和可维护性。但是智能指针并不是一种完全替代普通指针的工具,有些情况下仍然需要使用普通指针。智能指针适用于以下情况:动态内存管理:智能指针可以自动管理动态分配的内存,确保在不再......
  • OI 速通指南
    留给后人了属于是。来讲一讲如何速通OI吧。最优原地OI速通方法(AFO)原地退役。耗时:\(\epsilon\)。能够总结出来的好用的速通方法也就是上面那个了。不同人之间的思维方式差异较大,所以能够总结出来一个普适性的方法也是很不容易了。。。本来闲话里也有提到,有意向写一写经......