笔试编程题常用的一些技巧方法
- 但却容易忘记的
- pair元素赋值
1,初始化方式 pair<int, int> p(1, 2); 2,单独赋值 pair<int, int> p; p.first = 1; p.second = 2; 3,构造函数 pair<int, int> p1(1, 2); pair<int, int> p2(p1); 4,= 赋值 pair<int, int> p1(1, 2); pair<int, int> p2 = p1; 5, make_pair 赋值 pair<int, int> p = make_pair(1, 2);
- map元素的遍历: 使用迭代器iter->first,second 访问
#include <map> #include <string> #include <iostream> using namespace std; int main() { //变量声明的方式,和STL中其他方式的声明一样 map<int, string> mapStudent; //map的三种插入方式 mapStudent.insert(map<int, string>::value_type(1, "student_one")); mapStudent.insert(pair<int, string>(2, "student_two")); //直接赋值的插入方式可以覆盖相同的值,但是其余两种方式不行 mapStudent[3] = "student_three"; map<int, string>::iterator iter; for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout << iter->first << ' ' << iter->second << endl; //map的查找方式 map类型的结构的find函数返回的值的类型为迭代器 /** 查找没有的话返回mapStudent.end(),但是打印会引发异常,也就是说可以直接打印: cout << mapStudent.end()->first<<' '<<mapStudent.end()->second << endl; 但是不能直接打印返回的迭代器的,不知到为何!!!!!!!!! */ map<int, string >::iterator it; it = mapStudent.find(1); cout << it->first<<' '<<it->second << endl; //mapStudent.end()返回值是指向最后一个元素的迭代器 //cout << mapStudent.end()->first<<' '<<mapStudent.end()->second << endl; //删除元素 iter = mapStudent.find(1); mapStudent.erase(iter); int n = mapStudent.erase(2);//如果刪除了返回1,否则返回0 mapStudent.erase(mapStudent.begin(), mapStudent.end()); //等于mapStudent.clear() system("pause"); return 0; }
- atoi 和stoi
vs环境下: stoi函数默认要求输入的参数字符串是符合int范围的[-2147483648, 2147483647],否则会runtime error。 atoi函数则不做范围检查,若超过int范围,则显示-2147483648(溢出下界)或者2147483647(溢出上界)。 stoi头文件:<string>,c++函数 atoi头文件:<cstdlib>,c函数
C/C++基本语法学习
STL
C++ primer