0%

C++标准模板库STL学习笔记

面试笔试算法必备知识点!文章内容总结自《算法笔记》,时刻巩固以免忘记(lll¬ω¬)

1.vectory用法:

Vectory:变长数组

  1. 定义方法:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    vectory<typename> name;
    // eg:
    vectory<int> nums;

    // 如果typename类型也是一个STL容器,定义方式如下:
    vectory<vectory<int> > name; // >>之间有空格避免歧义 --》两维都可变的二维数组

    // vectory数组的定义方式如下:
    vectory<typename> Arrayname[arraySize] // 一维可变的二维数组
    // eg:
    vectory<int> nums[10]
  2. 访问方法:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 通过下标访问:
    nums[0], nums[1];

    // 通过迭代器访问:
    vectory<typename>::iterator it;
    //eg:
    vectory<int>::iterator it; // 得到迭代器it,通过*it进行访问vectory

    // nums[i] 等价于 *(it + i)
  3. 常用函数:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1. push_back(x) 在vectory末尾添加一个元素x O(1) nums.push_back(i);
    2. pop_back() 在vectory末尾删除一个元素 O(1) nums.pop_back();
    3. size() 求得vectory元素个数 O(1) nums.size()
    4. begin() 求得vectory数组nums首地址与it指向地址一样 O(1) nums.beagin()
    5. end() 求得vectory数组nums尾元素的下一个地址 O(1) nums.end()
    6. clear() 清空vectory所有元素 O(n) nums.clear()
    7. insert(it, x) 向vectory任意迭代器it处插入一个元素x O(N) nums.insert(nums.begin() + 2, 3)
    8. erase(it) 删除迭代器it处元素 O(n) nums.erase(nums.begin() + 2)
    9. erase(first, last) 删除[first, last)内的所有元素 O(n) nums.erase(num.begin() + 1, num.end())删除除第一个元素外的其他元素