vector:

1.头文件#include<vector>

2.声明vector对象,vector<int> vec;

3.尾部插入a:vec.push_back(a);

4.使用下标访问元素,cout<<vec[0]<<endl;

5.使用迭代器访问元素:

for( vector<int>::iterator it=vec.begin();it!=vec.end();it++)
           cout<<*it<<endl;

6.插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

7.删除元素:    vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

8.向量大小:vec.size();

9.清空:vec.clear();

10.重载<

 struct MyObject
{
int x;
int y;   bool operator< (const MyObject &a) const
{
if(x!=a.x)
return x<a.x;
else
return y<a.y;
}
};

tip:关于结构体定义的几种情况:

 struct  Student
{
string name;
}Stu; struct
{
string name;
}Stu; typedef struct Student
{
string name;
}Stu; typedef struct
{
string name;
}Stu;

set:  set<int> s;

1.元素插入:insert()

2.遍历:

set<int>::iterator it;

for(it=s.begin();it!=s.end();it++)

4.元素删除

s.erase(2);        //删除键值为2的元素

s.clear();

5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。

set<int>::iterator it;

it=s.find(5);    //查找键值为5的元素

if(it!=s.end())    //找到

cout<<*it<<endl;

else            //未找到

cout<<"未找到";

6.自定义比较函数

(1)元素不是结构体:

//自定义比较函数myComp,重载“()”操作符

  struct myComp

         {

             bool operator()(const your_type &a,const your_type &b)

             [

                 return a.data-b.data>;

             }

         }

set<int,myComp>s;

set<int,myComp>::iterator it;

(2)如果元素是结构体,可以直接将比较函数写在结构体内。

 struct Info

         {

             string name;

             float score;

             bool operator < (const Info &a) const

             {

                 return a.score<score;

             }

         }

set<Info> s;

set<Info>::iterator it;

stack:

1.入栈:s.push(x);

2.出栈:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。

3.访问栈顶:s.top()

4.判断栈空:s.empty(),当栈空时,返回true

5.访问栈中的元素个数:s.size()

queue:

1.入队:q.push(x); 将x 接到队列的末端。

2.出队:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。

3.访问队首元素:q.front(),即最早被压入队列的元素。

4.访问队尾元素:q.back(),即最后被压入队列的元素。

5.判断队列空:q.empty(),当队列空时,返回true。

6.访问队列中的元素个数:q.size();

1.元素插入:insert()
2.中序遍历:类似vector遍历(用迭代器)
3.反向遍历:利用反向迭代器reverse_iterator。
    例:
    set<int> s;
    ......
    set<int>::reverse_iterator rit;
    for(rit=s.rbegin();rit!=s.rend();rit++)
4.元素删除:与插入一样,可以高效的删除,并自动调整使红黑树平衡。
            set<int> s;
            s.erase(2);        //删除键值为2的元素
            s.clear();
5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
            set<int> s;
            set<int>::iterator it;
            it=s.find(5);    //查找键值为5的元素
            if(it!=s.end())    //找到
                cout<<*it<<endl;
            else            //未找到
                cout<<"未找到";
6.自定义比较函数
    (1)元素不是结构体:
        例:
        //自定义比较函数myComp,重载“()”操作符
        struct myComp
        {
            bool operator()(const your_type &a,const your_type &b)
            [
                return a.data-b.data>0;
            }
        }
        set<int,myComp>s;
        ......
        set<int,myComp>::iterator it;
    (2)如果元素是结构体,可以直接将比较函数写在结构体内。
        例:
        struct Info
        {
            string name;
            float score;
            //重载“<”操作符,自定义排序规则
            bool operator < (const Info &a) const
            {
                //按score从大到小排列
                return a.score<score;
            }
        }
        set<Info> s;
        ......
        set<Info>::iterator it;

优先队列:

1.priority_queue<int> qi;  //普通的优先级队列,按从大到小排序

2.priority_queue<int, vector<int>, greater<int> > qi2;  //从小到大的优先级队列,可将greater改为less,即为从大到小

其他内容:

c语言常用函数:

#include <math.h>

int abs( int x)

double fabs(double x)

double pow(double x,double y)

double sin(double x)

double sqrt(double x)

double log(double x)     //Ln

double log10(double x)    //Log10

#include <ctype.h>

int isalnum(int ch)    //是否字母或数字

int isalpha(int ch)     //是否字母

int isdigit(int ch)       //是否数字

int islower(int ch)

int tolower(int ch)

int toupper(int ch)

#include <string.h>

char *strcat(char *s1,char *s2)   //把字符串s2接到s1后面

char *strchr(char *s,int ch)        //在s所指字符串中,找出第一次出现字符ch的位置

int strcmp(char *s1,char *s2)    //对s1和s2所指字符串进行比较

char *strcpy(char *s1,char *s2)   //把s2指向的串复制到s1指向的空间

unsigned strlen(char *s)

char *strstr(char *s1,char *s2)    //在s1所指字符串中,找出字符串s2第一次出现的位置,返回找到的字符串的地址,找不到返回NULL

#include <stdio.h>

FILE *fopen(char *filename,char *mode)

int fclose(FILE *fp)

int getchar(void)

int putchar(char ch)

int fread(char *pt,unsigned size,unsigned n, FILE *fp)   //从fp所指文件中读取长度size为n个数据项存到pt所指文件

int fwrite(char *pt,unsigned size,unsigned n, FILE *fp)   //把pt所指向的n*size个字节输入到fp所指文件

#include <stdlib.h>

void *malloc(unsigned size)

void *realloc(void *p,unsigned size)  //    把p所指内存区的大小改为size个字节

C++常用函数:

algorithm

sort(a,a+20,cmp)

bool cmp( int a, int b )

{ return a>b; }

string _strrev(string str)  //返回一个逆置字符串的指针

int test1(){
    char s[100];
    int len;
    while((len=getline_(s,100))>0)
        printf("%s\n",s);

return 0;
}

STL基础的更多相关文章

  1. c++中级 STL基础学习(二)

    deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...

  2. STL基础知识

    一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内, ...

  3. STL基础复习

    stl容器:vector,deque,list,map/multimap,set 特殊容器:stack,queue,priority_queue 通用操作 size()  返回当前容器元素数量 emp ...

  4. STL基础--算法(排序)

    STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,1 ...

  5. STL基础--仿函数(函数对象)

    1 首先看个仿函数的例子 class X { public: void operator()(string str) { // 函数调用运算符,返回类型在operator之前 cout << ...

  6. STL基础--迭代器和算法

    1 迭代器 Iterators 5种迭代器类型 随机访问迭代器: vector, deque, array // 允许的操作 vector<int> itr; itr = itr + 5; ...

  7. STL基础--容器

    容器种类 序列容器(数组,链表) Vector, deque, list, forward list, array 关联容器(二叉树),总是有序的 set, multiset根据值排序,元素值不能修改 ...

  8. STL基础--基本介绍

    为什么要使用C++标准库 /* * 为什么使用C++标准库: * 1. 代码重用,不用重新造轮子 * 2. 效率(快速,且使用更少的资源). 现代C++编译器经常对C++标准库的代码有优化 * 3. ...

  9. STL基础4:deque

    #include <iostream> #include <queue> #include <string> using namespace std; #defin ...

随机推荐

  1. mssql 字增自段怎样重置(重新自增)|清空表已有数据

    方法1 -- 清空已有数据,并且将自增自段恢复从1开始计数 truncate table 表名 方法2 -- 不清空已有数据,但将自增自段恢复从1开始计数 dbcc checkident(表名,RES ...

  2. CSS3与页面布局学习总结(五)——Web Font与Sprite

    一.web font web font是应用在web中的一种字体技术,在CSS中使用font-face定义新的字体.先了解操作系统中的字体: a).安装好操作系统后,会默认安装一些字体,这些字体文件描 ...

  3. SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

    为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...

  4. 你真的会玩SQL吗?和平大使 内连接、外连接

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  5. JS将秒转换为 天-时-分-秒

    记录一下,备忘.. function SecondToDate(msd) { var time =msd if (null != time && "" != tim ...

  6. [精品书单] C#/.NET 学习之路——从入门到放弃

    C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...

  7. 学习之路~sqh

    推荐博客 Edison Chou: Vamei: 算法∙面试专题 - 简书: 设计模式 极速理解设计模式系列[目录索引]- Caleung: Net设计模式 - 灵动生活: 宅男程序员给老婆的计算机课 ...

  8. 分布式搜索elasticsearch配置文件详解

    elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来 ...

  9. Boost条件变量condition_variable_any

    Boost条件变量可以用来实现线程同步,它必须与互斥量配合使用.使用条件变量实现生产者消费者的简单例子如下,需要注意的是cond_put.wait(lock)是在等待条件满足.如果条件不满足,则释放锁 ...

  10. Delphi_07_Delphi_Object_Pascal_基本语法_05_函数参数

    这里主要讨论Delphi中函数.方法的相关内容. 一.工程文件 { Delphi语法方法和函数 1.方法 2.函数 } program Routine; {$APPTYPE CONSOLE} uses ...