zoukankan      html  css  js  c++  java
  • 《算法一》(STL概述)

    STL:标准模板库
    Standard Template Library

    STL:
    序列式容器:数据无序
    vector数组
    list双向链表
    deque双向动态队列
    关系式容器:数据有序
    map
    set
    multimap
    multiset

    容器都有的功能:增删改查
    容器都有的函数:
    构造、析构、插入、删除
    查找、拷贝构造、元素个数......

    迭代器:返回地址
    迭代器:用来定位容器中某个元素
    数组:下标
    链表:next指针
    容器:智能指针

    迭代器返回值:是容器中元素的地址
    因此每次使用最好初始化begin()

    迭代器.begin():指向第一个元素的地址
    迭代器.end():指向最后一个元素的后面
    容器.insert(迭代器, 数据):插入
    如果容器发生改变,迭代器会失效

    List:双向动态链表

    数组&&链表:数组查找高效
    链表插入删除高效
    数组连续,链表不连续

    deque:双向动态队列
    介于数组和链表之间

    参考代码:

    # include<iostream>
    # include<vector>
    
    using namespace std;
    
    int main(){
    	
    	vector<int> v;//制作一个模板类 
    	vector<int>::iterator it;//创造一个迭代器对象
    	
    	v.push_back(1);
    	v.push_back(2);
    	v.push_back(3);
    	v.push_back(4);
    	v.push_back(5);
    	
    	//cout<<v[0]<<endl;//读取第一个位置 
    	//cout<<v.at(0)<<endl;//读取第一个位置
    	
    	//读取全部元素 
    	for(int i=0; i<v.size(); i++){
    		cout<<v.at(i)<<" ";
    	} 
    	cout<<endl;
    	
    	//v.pop_back();//删除最后一个 
    	
    	//使用迭代器 
    	//迭代器刚开始指向第一个元素 
    	it = v.begin(); 
    	it += 3;//1+3:迭代器指向第四个元素	
    	v.erase(it);//删除迭代器指向的元素 
    	
    	//使用迭代器读取全部元素 
    	//it=v.begin():迭代器初始化
    	for(it=v.begin(); it!=v.end(); it++){
    		cout<<*it<<" ";
    	} 
    	cout<<endl;
    	
    	//插入元素:insert使用 
    	it = v.begin(); 
    	it += 2;//指向第三个位置 
    	v.insert(it, 9627);//第三个位置插入 
    	
    	for(it=v.begin(); it!=v.end(); it++){
    		cout<<*it<<" ";
    	} 
    	cout<<endl;
    	
    	return 0;
    } 
    

      

  • 相关阅读:
    最简单跨平台的日志库
    linux文件锁
    Linux 获取屏幕分辨率与窗口行列数(c/c++)
    linux 信号机制
    记一次函数异常(getopt_long)
    程序单实例运行
    简单地 Makefile 书写
    学习go的一些笔记
    20200930 10. Netty 核心源码剖析
    20200930 9. TCP 粘包和拆包 及解决方案
  • 原文地址:https://www.cnblogs.com/Whgy/p/12283624.html
Copyright © 2011-2022 走看看