C++常⽤⽅法
memest 初始化、置零、清空
extern void *memset(void buffer, int c, size_t count) 功能:将已开辟内存空间 buffer 的⾸ count 个字节的值设为值 c buffer:为指针或数组 c:赋给buffer的值 count:buffer的长度
INT_MAX 、INT_MIN 最⼤最⼩整数
short ⾄少 16 位,long ⾄少 32 位,long long ⾄少 64 位;
位(bit) 字节(byte) 1 字节 = 8 位
int 和 string 转换int 转换成 string: to_string (C++ 11 新增) string to_string (int val); ⼏乎可以直接转所有的数据类型为 string string 转换成 int: atoi、atof、atol int atoi(const char* str);
string 常⽤⽅法
substr ⼦串s.substr(pos, n); // 从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos)find 查
// 数组置 0
int  a [50];
memset (a , 0, 50 * sizeof (int ));
memset (a , 0, sizeof (a ));
// 字符串初始化
char  b [100];
memset (b , '/0',
sizeof (b ));
−INT _MAX −1=INT _MINc++string类型
short ≤int ≤long ≤long  long
int
a = 123;
string b = to_string (a );
string c = "123";
int  d = atoi (c .c_str ());
string s ("123456789");
string a = s .substr (0,5);  //获得字符串s 中从第0位开始的长度为5的字符串
reverse 反转字符串转字符数组
字符串⽐较
bitset 在 bitset 头⽂件中,⼀种类似数组的结构,它的每⼀个元素只能是0或1,每个元素仅⽤1bit 空间。bitset 重载了 |、&、^、~、<<、>> 操作符bitset 可⽤ [] 访问元素(不检查越界)bitset 可⽤ .to_string() 转为字符串,.to_ulong() 转为⽆符号长整型
// 查第⼀个字符 'c'char  stl [] ="abcdef";
char  * p = find (stl
, stl + strlen (stl ), 'c');
string s ("abcdefg");
string ::size_type position ;
position = s .find ("cd"); // 没到返回string::npos
if  (position !=string ::npos )
cout << position << endl ;
// 在容器中查
std ::vector
<int > myvector {10,20,30,40,50};
std ::vector <int >::iterator it ;
it = find (myvector .begin (), myvector .end (), 30);
string str ("abcde");
reverse (str .begin (), str .end ());
string a = "abc123";
const  char  *b ; //这⾥必须为const char *,不能⽤char *
b = a .c_str ();
char  *c = new  char [20];
strcpy (c , a .
c_str ()); //指针类型可以不⽤const char *
string A  ("aBcdef");
string B  ("AbcdEf");
int  m =A pare  (B ); //完整的A 和B 的⽐较
int  n =A .
compare (1,5,B ,4,2); //"Bcdef"和"AbcdEf"⽐较
int  p =A pare (1,5,B ,4,2); //"Bcdef"和"Ef"⽐较
int  q =A pare (1,5,B ); //"Bcdef"和B ⽐较
//若参与⽐较的两个串值相同,则函数返回 0;
//若字符串 A 按字典顺序要先于 B ,则返回负值;反之,则返回正值。
#include  <bitset>
bitset <8> bitset1(12); // 长度为8,⽤12初始化,前⾯补0
bitset <8> bitset2(string ("10111001")); // 01字符串初始化
// 若初始值⽐bitsize ⼤,参数为整数时取后⾯部分,参数为字符串时取前⾯部分
sort ⾃定义排序规则
sort() ⽅法第三个参数 compare,是个⾃定义的⽐较函数的指针,原型如下:
bool cmp (const Type1 &a,const Type2 & b);
Vector 合并
使⽤ insert 或 merge(merge 要预留⾜够空间)
resize/reserve:前者分配空间,后者预留空间
ACM 复杂输⼊
1. 形如 [[1,2,5],[1,3,5],[4,2,10]] ⼆维矩阵输⼊:
// ⼀些实⽤⽅法
bitset <8> foo  ("10011011");
foo .count (); //求bitset 中1的位数
foo .size (); //求bitset 的位数
foo .test (2); //查下标处的元素是否为1
foo .any (); //查bitset 中是否有1
foo .none (); //查bitset 中是否没有1
foo .all ();  //查bitset 中是全部为1
foo .flip (); //将bitset 每⼀位全部取反
foo .flip (2);  //将参数位取反
foo .set (); //将bitset 的每⼀位全部置为1
foo .set (3,0); //将第⼀参数位的元素置为第⼆参数的值
foo .set (3); //
将参数下标处置为1
foo .reset (2); //将参数下标处置为0
foo .reset (); //将bitset 的每⼀位全部置为0
sort (arr .begin (),arr .end (),less <int >()); // 默认从⼩到⼤
sort (arr .begin (),arr .end (),greater <int >());
static  bool  cmp (const  int & a , const
int & b )
{
return  a > b ; //从⼤到⼩排序
}
sort (nums .begin (), nums .end (), cmp );
sort (nums .begin (), nums .end (), [](const  int & a , const  int & b ) { return  a > b ; });
vec3.insert (d (),vec1.begin (),d ())
vec3.insert (d (),vec2.begin (),d ())
merge (vec1.begin (),d (),vec2.begin (),d (),vec3.begin ())
2. 形如 1 2 4 56 2 77 32 不定个数数字
注意不要⽤ ()!=’\0’),会导致第⼀个数进不去!
while(cin>>t) 不能在结束时⾃动终⽌
判断字符类型
函数的声明在头⽂件 <cctype> bool isalpha(char c) 判断字符是否为字母 bool isdigit(char c) 判断字符是否为数字 bool isalnum(char c) 判断字符是否为数字或者字母 bool islower(char c) 判断 字符是否为⼩写字母 bool isupper(char c) 判断 字符是否为⼤写字母 char tolower(char c) 把字符转化为⼩写字母 char toupper(char c) 把字符转化为⼤写字母#
include  <iostream>
#include  <string>
#include  <vector>
#include  <sstream>
#include  <algorithm>
using  namespace  std ;
int  main ()
{
//[[1,2,5],[1,3,5],[4,2,10]]
string res ;
cin >> res ;
stringstream ss ;
replace (res .begin (), res .end (), '[', ' ');
replace (res .begin (), res .end (), ']', '\n');
replace (res .begin (), res .end (), ',', ' ');
ss << res ;
string st ;
vector <vector <int >> data ;
while  (getline (ss , st )) {
std ::istringstream iss (st );
string num ;
vector <int > tdata ;
while  (iss >> num ) {
tdata .push_back (stoi (num ));
}
data .push_back (tdata );
}
return  0;
}
vector <int > num ;
int  t ;
do {
cin >> t ;
num .push_back (t );
} while  (cin .get () != '\n');

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。