【C++】琐碎知识点整理记录

1、要将一个字母大小写变换一下,可以用这种方法:

char s
s^=32;    //s^=(1<<5)也可以

2、创建set并初始化,利用set判断某个元素是否在set中。set类是有序的。

set<char> setJ(std::begin(setK),std::end(setK)); // 创建K的副本
for(char s:S)
     if(setJ.count(s)) res++;

3、double变量不能用==判断是否相等,因为精度问题

4、右移操作符本身不修改变量值,会返回一个移位后的值:

a=a>>1

5、P1为int指针,P2为int值。

int* p1,p2;

6、类传递一般用const 引用。

7、内联函数适合用于小且非递归的函数,且内联声明和定义都需要在开头加上inline。

8、将表达式传递给函数引用参数会报错。

9、单精度浮点数用23位来储存尾数,小数点前还有一位隐藏的1,所以一共可以表示10^7<2^24<10^8,所以单精度浮点数的有效位数为7,如果考虑第7位为四舍五入问题,则最少有效位数为6位;同样双精度浮点数的尾数用52位存储,即有效位数为16位,考虑四舍五入则为15位。

10、下面程序中的v为m的引用:

hanshu((m)){ v=m; }

11、m=!!n :如果n>0,m=1;如果n==0,m=0!

12、一个数字异或它自身结果为0!

13、一个指针指向字符串,当字符串为空则不代表指针为NULL,这两种情况需要分别考虑!

14、像下面这么用不行,因为s只是一个复制,并不会改变容器中字符串的值:

for(string s:rightRes)
    s=curStr+s;

下面这么用可以:

for(string& s:rightRes)
    s=curStr+s;

15、关于二维容器:

vector<vector<int>> num;
num.push_back({i,j}) // 可以直接这么输入

16、string.find_first_of("abcdef",i),从第i个元素开始 寻找 在前一个字符串常量中包含的字符 的下标;string.find_last_of( )同理...

i = s.find_first_of("aeiouAEIOU", i);
j = s.find_last_of("aeiouAEIOU", j);

17、利用 c库函数 atoi 将 string 转换为 int:

#include<stdlib.h>    // atoi
string a = "1234";
int b = atoi(a.c_str());    //需要const char* 类型参数(c中字符串类型)

其实也可以使用C++11添加的函数版本:

#include<string>    // stoi
string a = "1234";
int b = stoi(a);

其他还有类似的 stol(long), stof(float), stod(double)

除了 to_string( ) 函数,还可利用 stringstream 将 int 转换为 string:

int a = 1234;
stringstream ss;
ss<<a;
string str = ss.str();

20、

string[10]="asdfghjkl";
cout<<*string;    //输出字符串

21、调用时钟函数,可以测试代码的运行时间:

clock_t time1=time();
...
clock_t time2=time();
cout<<time2-time1<<endl;

22、unordered_map<char, int> exmap;对象使用 exmap[c]++ 时,假如map中存在c键,对应值会+1 ;假如不存在,则会添加<'c',1>键值对。

23、unordered_set使用insert方法时加入原set中不存在则会添加,否则只是不添加但不会报错。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值