首页 > 编程语言 >C++知识点捕捉

C++知识点捕捉

时间:2023-01-31 13:22:33浏览次数:40  
标签:知识点 ch return int cin C++ 捕捉 long 头文件

1.对于提高cin运行时间代码:
ios::sync_with_stdio(false);
	cin.tie(0);//cin.tie(nullptr);
  • 减少运行时间,scanf永远的神

  • 13倍,……………………………………

2、提高读入时间的代码:
inline int max(int x,int y){return x>y?x:y;}
inline int min(int x,int y){return x<y?x:y;}
inline int abs(int x){return x>0?x:-x;}
inline void swap(int &x,int &y){int t=x;x=y;y=t;}
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    return x*f;
}
3、字符串输入带空格的,只能使用数据类型是char型的。
const int N=100005;
char a[N];
cin.getline(a,N);
  • scanf读入string字符串
  • 提示,一定不要scanf和cin同时用,一次选用一种,必须。
4结构体的运用语句
struct Edge
{
    int a,b,w;
    bool operator<(const Edge& W) const
    {
        return w<W.w;//升序
    }
}edges[M];

降序:W.w<w;注意不可改变<

赋值:edges[i]={a,b,w};
5 万能头文件
  • 能不用就不用,也会耗费时间,最好记住所用函数具体的库
  • 由于C语言没有命名空间,头文件并不存放在命名空间中,因此在C++程序文件中如果用到带后缀.h的头文件时,不必用命名空间。只需在文件中包含所用的头文件即可
#include<bits/stdc++.h>
6 sort与cmp
struct sno 
{
	int x,y,z,w,d;
}q[305];


bool cmp(sno a,sno b)
{
    if(a.w>b.w) return 1;
    else if(a.w<b.w) return 0;
    else
    {
        if(a.x>b.x) return 1;
        else if(a.x<b.x) return 0;
        else
        {
            if(a.d>b.d) return 0;
            else return 1;
        }
    }
}


//主函数:sort(q,q+n,cmp);
7.int范围
  • -2147483648 ~ 2147483647
  • 2^32=4294967296
  • 2^31=2,147,483,648
8.二分查找
  • 只针对有序序列。
9. c++自带函数耗时长
  • 能不用就不用,要不然就自己写一个。比如memset
10.vector 创建二维数组
	vector<vector<int> > d(n+1,vector<int> (n+1,INF));
INF设置初始值,注意不要超过int类型,否则会溢出,溢出就可能负一个负值。
>>注意一定要有空格> >,要不然会成cout>>
11.强制类型转化
1ll*m*n,1ll相当于 long long 类型下的1,
    所以1ll*m*n=long long 类型下的m*n
12.建立long long长度的数组技巧
map<ll,ll>a
13.一种主函数内部定义函数方式---方便使用vector及时创建数组时使用
  • 必须引进头文件#include<functional>


function<void(int, int, bool)> search = [&](int L, int R, bool odd) 
{
 	while (L <= R) 
    {
 		int mid = L + R >> 1;
 		int len = 2 * mid - (odd ? 1 : 0);
 		bool answer = 0;
 		for (int l = 1, r = l + len - 1; r <= n; ++l, ++r)
        {
 			ULL Lres = LHash[r] - LHash[l - 1] * P[len];
 			ULL Rres = RHash[l] - RHash[r + 1] * P[len];
 			if (Lres == Rres) 
        	{
 				answer = 1;
 				int i = l + (len + 1) / 2 - 1;
 				ans = max(ans, len / 2 + same[i]);
 			}
	 	}
 		if (answer)
    	{
 			L = mid + 1;
 		}
    	else R = mid - 1;
 	}
 };//注意分号
14.字符串读入的注意点---有关于从下标1开始读取
char a[N][N];
for(int i=1;i<=n;i++)
{
	cin>>a[i]+1;//相当于坐标从1开始,但是原来的0下标位存储的是'/0',所以如果读a[i],那么一定会截止,读到'/0'就结束,注意这里是第二维从1开始,但是我们读a[i]的话,是从第二维的0下标位去读取,所以什么也读不出来
}
15.数组初始化

16.时间复杂度

a31151f077829437d84c58f6763305a4.png

标签:知识点,ch,return,int,cin,C++,捕捉,long,头文件
From: https://www.cnblogs.com/hblgzsx/p/17078651.html

相关文章

  • C++运算符重载引用传参与返回引用的小小心得
    1#include<bits/stdc++.h>23usingnamespacestd;45//平面向量类,提供完成向量运算和比较的API6//除递增运算符和左移运算符重载外其他函数省略78......
  • 小熊猫C++编写海龟作图程序
    未完待续。。。初遇问题使用内置的模板创建海龟作图小程序:但是,编译运行时出现错误:rturtle海龟绘图命令小结在小海龟行动之前,我们需要熟悉一下绘图环境。这里用列表小结一下......
  • C++ 编译相关
    目录一、cmake前言安装步骤二、cmake与make两者区别为什么不直接使用项目编译链接工具(gcc/g++...)为什么不直接使用make或者Ninjacmake指定编译器(cmake-G)三、CMakeLists......
  • C++ STL stack
    #include<stack>头文件usingnamespacestd;作用这个很清楚了,FILO运用在:括号匹配、波兰式计算问题上(未完待续)创建一个参数,默认使用deque容器stack<typenameT,t......
  • C/C++学生成绩信息管理[2023-01-30]
    C/C++学生成绩信息管理[2023-01-30]2.学生成绩信息管理【问题描述】利用哈希表完成学生成绩信息的管理。每个学生记录包含学生学号(Number)、真实姓名(Name)、网名(Scre......
  • C++ 模板之类模板
    使用类模板,可以事先不确定成员变量的类型,假如我们要写一个先进后出的栈,这个栈既可以放入int,也可以放入long,还可以放入string,那么就需要使用模板技术,否则,类的成员变量将难以......
  • C++ 运算符重载
    技术,是实现目标的手段,重载运算符,可以让程序看起来更优美,更优美的程序更具有可读性,如果不重载,使用函数一样可以达到目的,但那样子程序看起来很蹩脚,直接上代码    #inclu......
  • 使用GDB调试python调用的C++共享库
    目录1.首先编写python调用C++的demo2.gdb调试python程序3.全速运行程序4.查看堆栈信息当我们用Python调用C++的库,并且C++库中存在段错误崩溃时,首先想到的还是用gdb......
  • Python和C++联合调试
     python和c++分别在Linux和Windows下联合调试首先创建一个python测试项目和一个c++拓展项目一、在Windows下进行调试1.编译器安装2.C拓展模块安装3.调试......
  • python调用cpp 调试_python和C++联合调试
    python可以利用SO的方式去调用C++中的函数,但是需要一种调试方案来进行python和C++的联合调试,效果是直接在c++代码中打断点,然后python在进行c++so调用的时候,直接进入到断......