【C++用法的学习心得】教程文章相关的互联网学习教程文章

vs2019 16.8更新之后的 C++20 协程co_yield用法【代码】

由于搜索出来的帖子,都是老版本的实验协程,很多老的代码已经失去参考性,并且很复杂,所以就自己研究了一下。 1 #include <iostream>2 #include <coroutine>3 #include <thread>4 5 template<typename _Ty>6 struct cocontext {7 struct promise_type;8 using _Hty = std::coroutine_handle<promise_type>;9 struct promise_type { 10 // 只要一个函数的返回值是 cocontext<T>,这个函数内存在co_await co_y...

C++ STL库用法实例【代码】

你还在担心不会用auto写for循环吗? 你还在担心map不会用吗? 你还在为STL的各种库不会用而苦恼吗? 相信我,看了这篇文 。 。 。 你依然不会! CF977B Two-gram' rel='nofollow' target='_blank'>题目传送门—>CF977B Two-gram 题目描述: 给你一个字符串,找出现次数最多的长度为2的子串。 输入样例: 7 ABACABA 输出样例: AB 这道题可以作为C++ STL库的优质练手题 1.auto的循环遍历for(auto x : range) 创建拷贝,无法修改range...

合并果子+c++优先队列priority_queue的用法【代码】

题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n?1n-1n?1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果...

c++中set的基本用法【代码】

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。 关于set,必须说明的是set...

C/C++ assert()函数用法总结【代码】

#include <stdio.h> #include <assert.h> #include <stdlib.h> int main() {FILE *fp;fp=fopen("test.txt", "w");//以可写的方式打开一个文件,如果不存在就创建一个同名文件assert(fp);//所以这里不会出错fclose(fp);fp=fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败assert(fp);//所以这里出错fclose( fp ); //程序永远都执行不到这里来return 0; } 已放弃使用assert()的原因是,频繁的调...

C++ 中assert断言函数的基本用法【代码】【图】

在我们的实际开发过程之中,常常会出现一些隐藏得很深的BUG,或者是一些概率性发生的BUG,通常这些BUG在我们调试的过程中不会出现很明显的问题,但是如果我们将其发布,在用户的各种运行环境下,这些程序可能就会露出马脚了。那么,如何让我们的程序更明显的暴露出问题呢?这种情况下,我们一般都会使用 assert 断言函数,这是C语言标准库提供的一个函数,也就是说,它的使用与操作系统平台,调试器种类无关。我们只要学会了它的使...

C++ |do{...}while(0)的意义和用法详解【图】

在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是我发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。?1. do...while(0)消除goto语句 通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样: versi...

C / C++ 保留两位小数(setprecision(n)的一些用法总结)【代码】

首先说C++代码#include <iomanip> //不要忘了头文件 1//第一种写法cout<<setiosflags(ios::fixed)<<setprecision(2); 1 2//第二种写法cout.setf(ios::fixed);cout<<setprecision(2);3//第三种写法cout<<fixed<<setprecision(2); 1``2```cpp 要保留几位小数setprecision(n)的括号里n就换成几。 前两种写法是一样的,第三种是简化写的。 上面的语句写一次就行了,对之后的数字都有效。 然后说C的代码 个人感觉c的输出比较简单粗暴。...

C/C++知识教程:static的用法【图】

?static 的用法 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 下面就这三种使用方式及注意事项分别说明 (1)局部静态变量 定义在代码块中,只做用于代码块内 #include<iostream> using namespace std; int global = 3; static int s_external...

C++学习笔记——对象模型浅析(五):其他用法【图】

C++学习笔记——对象模型浅析(五):其他用法 又写完了一个板块,我觉得对我自己而言坚持写博客还是有点提高的,是一种很好的学习方法! 接下来就要进入C++最重要的一个板块了(相信对其他语言也是如此!):继承与多态。

C++中的c_str()函数用法(转)

语法: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 比如:最好不要这样: char* c; string s="1234"; c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理,同...

C++11mutimap 与map用法总结【代码】

一、map 用法 1、map数据的插入 #include <iostream> #include <map> #include <string> #include <vector> #include <algorithm> using namespace::std; //数据插入map<int, string> mapStudent;/*四种插入的方式*/mapStudent.insert(map<int, string>::value_type(1, "student_one"));mapStudent.insert(map<int, string>::value_type(2, "student_two"));mapStudent.insert(map<int, string>::value_type(3, "student_three"));...

C++ vector的用法【代码】

ector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件: #include; 一、vector 的初始化:可以有五种方式,举例说明如下: (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。(2)vector a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1 (...

【C/C++】指针用法详解【代码】【图】

定义与初始化定义:int *p=&a; 初始化:int *p ; p=&a;也就是说,定义时使用int p表示定义p为一个指针变量;而使用时,p代表地址,p代表其内容。 char a[ ]和char *achar a[ ] 内容可变,地址不可变 char *const p,是指针常量const char *a 内容不可变,地址可变 const char *p,是指针变量char *a 内容不可变,地址可变这里“地址”指a的值。 这里“内容不可变”指不可以编辑*a的具体某一个单元。 注意:char const *p=const cha...

c++——dynamic_cast < type-id > ( expression)函数用法【代码】【图】

一、dynamic_cast运算符 dynamic_cast运算符是最常用的RTTI的组件,它不能回答“指针指向的是那类对象”这样的问题, 但能够回答“是否可以安全地将对象的地址赋给特定类型的指针”这样的问题。 class A {...}; class B :public A {...}; class C :public B {...};B *p = dynamoc_cast<B *>(q); //上述语句描述了指针q的类型是否可以安全的被转换为B*?如果可以,运算符将返回对象q的地址,否则返回一个空指针。二、demon #include...