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;
    } 
    

      

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/Whgy/p/12283624.html
Copyright © 2011-2022 走看看