阿鲲的博客 主修软件工程和算法模型,极客成长中

OJ-trick

2019-04-06
jktian

阅读:

 

  1. 注意输入和输出的格式
  2. 考虑对输入的考察
  3. 输出格式在最后做

input/process/output

STL

string.append(index,char);

string的相加操作,需要都是string ,不能是char

io

流操作基本都是以空格为分隔符 getline这样的全局函数是自定义分隔符

input

  • fgets(string,sizeof(len),stdin) # 只接受len长度的输入,多余部分截断
  • char s[6];cin.width(6);cin » s;
    c-io
    1. scanf, printf, putc, getc, puts, gets
    2. fgetc, fputc, fgets, fputs, fprintf, fscanf
    3. 二进制:fread, fwrite

      c++的两类字符串

    4. 以null即’\0’结尾的, char str[6] = {‘’,’’,’’},有strcat/strlen/strcopy等函数
    5. string类
      string头文件
  • 文件cstring,和string.h对应,c++版本的头文件,包含比如strcpy之类的字符串处理函数
  • 文件string.h,和cstring对应,c版本的头文件,包含比如strcpy之类的字符串处理函数
  • 文件string,包含std::string的定义,属于STL范畴

  1. iostream
  2. stringstream, 头文件是sstream
    1. 多用于数据类型格式转换,不用stdio.h了,把int/float/bool转换为string/char[]
    2. 优点:不用严格指定类型.%d之类的.类型安全&可扩展性
    3. 使用:ss «, ss ». 若要复用ss, 需要ss.clear();
  3. fstream
    1. fileObject.open(filname, [ios::app, ios::out   ios::trunc, ios::in, ]) # trunc防止文件已存在.可以在定义时直接初始化为(filename,[ios::]),或者使用open()
    2. 指针重定位:seekg(seek get)读指针, seekg(n, [ios::cur, ios::beg, ios::end]) seekp(seek put)写指针
    3. 可以使用相对路径,../file.txt, 要有两个点.绝对路径一定可以
  • 相当于对cout/cin名字的替换.cin默认忽略前置空格,将空格作为分隔符
  • getline(cin, s, dlim) 默认用’\n’分割, 和get()的区别,getline会读取并丢弃换行符,get会保存换行符在输入序列中,而不是读取并保存,所以连续两次调用get, 第二个会直接返回, get针对char[], 可以设置字符数,属于string头文件 -或者cin.getline(str/char[], size(包含’\0’),结束符);
  • ifstream fin(‘thisfile.txt’); getline(fin, s); stringstream ss(s); ss » s1; ss»s2;其中s1是以空格作为分隔符的
区分点
  1. 分隔符是什么.是否包含空格,是否可自定义dlim
  2. 针对的是string还是char[], 是否可以自定义长度

    指针

    对是否是野指针进行判断

    unsign, sign

    从二进制角度考虑,隐型类型转换

    相等判断

    • java中,对象本身是指针,==直接判断地址相等;值为equals()

内存

代码区 ==> 数据区 ==> 栈 ==> 堆

string与char

string.push_back(string); string.append(chars);

#include <string>
using namespace std;
...
        char c = 'A';
	char* lvlpcStr = "hello";
	string lvStr,lvSubStr = "sub string";
	lvStr.push_back(c);
	lvStr.append(lvlpcStr);
	lvStr.append(lvSubStr);
	char lvBuf[100];
	_itoa_s(1234, lvBuf,10);
	lvStr.append(lvBuf);
	cout << lvStr << endl;

STL

https://www.cnblogs.com/skyfsm/p/6934246.html string vector set: 有序且唯一 list: 链表, 有自己的sort函数, 无法使用algorithm的排序算法,因为无法随机访问 map: key-value, 采用了hash思想, key尽量为string

  1. dict采用了哈希表,最低能在 O(1)时间内完成搜索。同样的java的HashMap也是采用了哈希表实现,不同是dict在发生哈希冲突的时候采用了开放寻址法,而HashMap采用了链接法。 iterator: 常迭代器, 逆迭代器

Similar Posts

上一篇 数据库复习

下一篇 ROC曲线

Comments