C/C++
c/c++的一些简单代码和应用
理想不闪火
成为优秀的CVer,
目前在读软件工程,计算机视觉、深度学习和医学图像处理专攻,
偶尔也搞迁移学习和全栈开发。
展开
-
一种安全的static变量Get/Set方式
目的:避免static变量是个文件内可见的全局变量Get:std::atomic<bool>* GetGraphVerboseStepLr() { static std::atomic<bool> graph_verbose_step_lr{false}; return &graph_verbose_step_lr;}Set:void SetGraphVerboseStepLr(bool verbose) { auto* graph_verbose_s原创 2022-03-14 10:43:48 · 1247 阅读 · 0 评论 -
C++中的sta::atomic<bool>和auto类型
文章目录sta::atomicauto类型用法总结sta::atomic最基本的原子整数类型是std::atomic(可以使用预定义的别名std::atomic_bool),这是一个比std::atomic_flag功能更全的布尔标志,并且可以使用非原子的bool来赋值和初始化。std::atomic<bool> b(true);b=false;要注意的是,原子类型赋值操作返回值而非引用。与std::atomic_flag使用clear不同,std::atomic写(存储)操作是原创 2022-03-12 22:31:56 · 9087 阅读 · 0 评论 -
GCC中的分支预测(likely和unlikey)
文章目录概述场景总结概述开发人员在开发服务的过程中,可以根据业务逻辑的特性来判断当前的条件语句被执行的概率情况,经常被执行到的代码片段可以紧邻顺序执行的代码片段后边,偶尔被执行到的条件代码片段被放到其他代码片段,从而减少代码在顺序执行过程中的代码上下文的跳转次数,达到提高程序执行效率的目的。这种方式的优化,需要严重的依赖于业务逻辑所处的环境,对于GCC等编译器来将,显然是无法根据业务逻辑自动做出性能优化的,最直接的一种方法就是:由开发人员告诉编译器,这部分代码片段被执行的概率比较高,可以进行优化。为此,原创 2022-03-11 16:51:27 · 691 阅读 · 0 评论 -
C++ 接口(抽象类)的概念
文章目录概述设计策略概述接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 “= 0” 来指定的,如下所示:class Box{ public: // 纯虚函数 virtual double getVolume() = 0; private: doubl原创 2022-02-14 11:22:38 · 1503 阅读 · 0 评论 -
C++条件编译:#ifdef
本文主要介绍c++中条件编译相关的预编译指令,包括 #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined。#define 定义一个预处理宏#undef 取消宏的定义#if 编译预处理中的条件命令,相当于C语法中的if语句#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句#ifndef 与#if原创 2021-12-31 09:05:00 · 6450 阅读 · 0 评论 -
C++ 判断某个变量是某一种类型
C++ 判断某个变量是某一种类型例如判断一个变量是否是vector类型?#include <iostream>#include <vector>int main(){ std::vector<int> a = { 1,2,3,4,5 }; // std::vector<std::vector<int>> b = { {1,2},{3,4} }; std::cout << (typeid(a).name() == ty原创 2021-12-14 20:28:45 · 1418 阅读 · 0 评论 -
7-1 堆栈操作合法性(20 分)
7-1 堆栈操作合法性(20 分)假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X...原创 2019-10-21 21:24:07 · 8280 阅读 · 1 评论 -
c语言函数习题
习题: 定义一个函数:求某数字(3位数)是否是水仙花(每一位数的立方=本身) 153=1^3+5^3+3^3#include<stdio.h>void fun(int x){ int i=0,a,b=0; int c = x; for(i=0;i<3;i++) { a = x%10; b = b + a*a*a; x = x/10; }...原创 2019-10-20 12:43:12 · 3762 阅读 · 0 评论 -
STL中的常用算法
C++STL 常用算法使用时包含#include <algorithm>一、非变异算法是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。非变异算法具有极为广泛的适用性,基本上可应用与各种容器。1查找容器元素find它用于查找等于某值的元素。它在迭代器区间[first,last)(闭开区间)上查找等于value值的元素,如果迭代...原创 2019-08-22 18:19:23 · 591 阅读 · 0 评论 -
C++ with STL(五)queue&stack&list
queue(先进先出)queue有入队push(插入)、出队pop(删除)、读取队首元素front、读取队尾元素back、empty,size这几种方法#include<iostream>#include<queue>using namespace std;int main(void){ queue<int> q;//**********...原创 2019-08-22 17:49:14 · 452 阅读 · 1 评论 -
C++ STL (三)动态数组
#include <iostream>#include<vector>#include<string>using namespace std; int main(){ const int maxn=4; vector<int> vec1; vector<string> vec2; vec2.push_back("Lixi...原创 2019-08-22 17:09:57 · 474 阅读 · 0 评论 -
C++ STL (四)set使用
概述主要用途:去重、排序 set中没有重复的元素,set中的元素都是排好序的。 set内部采用的是一种非常高效的平衡检索二叉树: 红黑树,也称为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树。 插入、查找、删除时间复杂度均为O(logn)简单操作#include <iostream>#include <set>...原创 2019-08-22 16:55:35 · 569 阅读 · 0 评论 -
C++ with STL(二)map
概述 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可以称为该关键字的值)的数据处理能力. 什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述.map<int, string> ma...原创 2019-08-22 11:24:06 · 366 阅读 · 1 评论 -
C++ with STL(一)
一.swapint a=1,b=2;swap(a,b);//此时a=2,b=1二.reverseint a[5]={1,2,3,4,5};reverse(a,a+5);//序列现在是 5 4 3 2 1char s[]="ericxie";reverse(s,s+strlen(s));//序列现在是 "eixcire"#include <iostream&...原创 2019-08-21 10:59:40 · 759 阅读 · 2 评论 -
简单排序详解
一简单排序伪码描述void Bubble_Sort(ElementType a[], int n){ for ( p = n - 1;p>=0; p--) { flag=0; for (i = 0; i < p; i++) { if (a[i] > a[i + 1]) { Swap(a[i],a[i]+1); fla...原创 2019-08-19 11:20:23 · 241 阅读 · 0 评论 -
标准模板库STL——string类
一#include<iostream>#include<string>using namespace std;int main(){ string s1(8, 'x'); cout << s1 << endl; string s2; cin >> s2; s1.assign(s1, 0, 1); cout <&...原创 2019-08-14 09:48:57 · 621 阅读 · 0 评论 -
二级c语言程序填空
# include <stdio.h>#define N 9void fun(int a[], int n){ int i,j, max, min, px, pn, t; for (i=0; i<n-1; i+=2) {/**********found**********/ max = min = a[i]; ...原创 2019-08-07 09:15:59 · 737 阅读 · 0 评论 -
最短路径(floyed)
题目描述平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务是找出从一点到另一点之间的最短路径。输入第1行:1个整数n第2…n+1行:每行2个整数x和y,描述了一个点的坐标第n+2行:1个整数m,表示图中连线的数量接下来有m行,每行2个...原创 2019-04-13 12:36:33 · 520 阅读 · 1 评论 -
lower_bound&upper_bound
low_bound()的返回值是一个迭代器,返回指向大于等于key的第一个值的位置#include<iostream>#include<algorithm>using namespace std;int main(){int a[]={1,2,3,4,5,6,7,8,9};printf("%d",lower_bound(a,a+8,6)-a);return ...原创 2019-07-30 11:33:27 · 224 阅读 · 0 评论 -
文件操作03——图片文件合成器
#include <iostream>#include<cstdio>#include<cstdlib>using namespace std;int main() { char ch,pic_name[20],file_name[20],finish_name[20]; FILE *f_pic,*f_file,*f_finish; print...原创 2019-08-01 15:25:16 · 504 阅读 · 0 评论 -
文件操作02-文件写入和读出
一.fputc(ch,pc)#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int main(){FILE *fp;char ch,filename[20];printf("Please input the filename you want to w...原创 2019-08-01 14:35:47 · 307 阅读 · 0 评论 -
文件操作01——文件打开
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int main(){ FILE *fp; if(!(fp=fopen("C:\\lixiang.txt","rb"))){ printf("Can not open H:\\lixiang.txt fi...原创 2019-08-01 10:58:05 · 272 阅读 · 1 评论 -
分别用指数形式和小数两种格式输出
#include<iostream>#include<iomanip>using namespace std;int main(){ const double pi = 3.14159; double r, c, s; cin >> r; c = 2.0*pi*r; s = pi * r*r; cout << setiosflag...原创 2019-06-25 11:32:36 · 5418 阅读 · 0 评论 -
输出63.215,域宽为10,多余位置用&占位,分别用右对齐,左对齐和内部对齐的方式输出
#include <iostream>#include<iomanip>#include<string>using namespace std;int main() { string b="+6"; float a=63.215;cout<<setfill('&')<<setw(10)<<a<&l...原创 2019-06-24 20:21:26 · 1740 阅读 · 0 评论 -
设计一个三角形类(多文件)
#ifndef _TRIANGLE_#define _TRIANGLE_class Triangle {private: double a, b, c;public: Triangle(); Triangle(double a, double b, double c); Triangle(Triangle &t); double getL(); double getS(...原创 2019-06-24 19:29:09 · 971 阅读 · 0 评论 -
设计一个汽车类(类的继承)
#ifndef _TAXI_#define _TAXI_#include<iostream>#include<string>using namespace std;class Car {private: int carnum; string carname;public: Car() { } Car(int carnum_,string carna...原创 2019-06-24 19:53:33 · 4271 阅读 · 0 评论 -
加法 输入输出运算符重载
#include<iostream>using namespace std;class Add {private: int x, y;public: Add(int aa = 0, int bb = 0) { x = aa; y = bb; } void display(); friend Add operator+(Add &t1, Add &...原创 2019-06-24 20:18:23 · 382 阅读 · 0 评论 -
格式化控制补充
原创 2019-06-16 16:15:31 · 234 阅读 · 0 评论 -
输入输出的数制控制
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;int main(){ int i, j; cin >> hex >> i >> showbase >> j; cout << i << '\t' <<...原创 2019-06-16 16:02:42 · 235 阅读 · 0 评论 -
setw()
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<iomanip>using namespace std;int main(){ char s1[20], s2[20]; cin >> setw(5) >> s1 >> s2; cout << s...原创 2019-06-16 15:40:03 · 559 阅读 · 0 评论 -
容器补充
#include <iostream>#include<vector>using namespace std;int main(){ vector <int> a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(2); a.push_back(3); a.push_b...原创 2019-04-25 14:26:46 · 316 阅读 · 0 评论 -
迭代器(智能指针)
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;bool cmp(int a,int b){ return a>b;}int main(){ int a; vector<string&...原创 2019-04-17 20:34:47 · 523 阅读 · 3 评论 -
vector
#include <iostream>#include<vector>#include<string>using namespace std; int main(){ const int maxn=4; vector<int> vec1; vector<string> vec2; vec2.push_back("Lixi...原创 2019-04-11 22:05:25 · 350 阅读 · 0 评论 -
string
#include <iostream>#include<string>using namespace std;int main(){string s="abc";string s1,s2,s3,s4;s1=s.substr(0,2);cout<<s1<<endl;s2=s.insert(0,2,'a');cout<<s...原创 2019-04-11 22:08:42 · 252 阅读 · 1 评论 -
algorithm
#include <iostream>#include<algorithm>using namespace std;bool cmp(int a,int b){ return a>b;}int main(){ int a[4]={2,9,3,1}; do{ for(int i=0;i<4;i++) cout<<a[i];...原创 2019-04-11 22:09:29 · 261 阅读 · 0 评论 -
ctype
#include<iostream>#include<cctype>using namespace std;int main(){ char c1='a'; char c2='1'; if(isalpha(c1)!=0) cout<<"yes"<<endl; if(isalpha(c2)==0) cout<<"no...原创 2019-04-14 15:11:56 · 306 阅读 · 0 评论 -
冒泡排序排序后仍可按输入顺序输出
#include <iostream>using namespace std;int main(){ int a[5]; for(int i=0;i<5;i++) { cin>>a[i]; } for(int i=0;i<4;i++) for(int j=0;j<4-i;j++)...原创 2019-04-17 11:02:53 · 712 阅读 · 0 评论 -
itoa() //将整形转换成字符串
#include <iostream>#include<cstdlib>#include<cstring>using namespace std;int main() {int n;cin>>n;char a[100];char b[100];char c[100];itoa(n,a,2);cout<<strlen...原创 2019-04-24 11:37:04 · 1228 阅读 · 0 评论 -
atoi() //把字符串转换成整型数
如果该输入无法转换为该类型的值,则atoi的返回值为 0。atoi(“abcd”);//括号内不是可以转化的类型,这种情况会返回0#include <iostream>#include<cstdlib>using namespace std;int main(){ int n; cin >> n; char a[100]; char b[10...原创 2019-04-24 20:33:30 · 717 阅读 · 0 评论 -
运算符重载
#include<iostream>using namespace std;/*常函数可以访问非const数据成员,非const成员函数可以读取常数据成员,常成员函数不可以调用非const成员函数*/class A {private: int x; int y;public: A(int x1 = 0, int y1 = 0) :x(x1), y(y1) {} vo...原创 2019-05-19 10:01:29 · 371 阅读 · 0 评论