Fork me on GitHub

笔试编程题常用的一些技巧方法

- 但却容易忘记的

- 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函数

 

posted @ 2018-08-12 22:44  ranjiewen  阅读(912)  评论(0编辑  收藏  举报