CPP常用库函数以及STL

其他操作

memset

void * memset ( void * ptr, int value, size_t num );
memset(ptr,0xff,sizeof(ptr));

使用memset初始化vector

vector<int> vec(10,1);
memset(vec.data(),0,vec.size()*sizeof(int));

#include<bits/stdc++.h>

需要注意的是:对于set和map而言,find并不是第一个满足条件的对象位置,而是其中的任意一个对象。

Standard Template Library: Algorithms

全排列

序列升序

next_permutation(a.begin(), a.end())

序列降序

prev_permutation(b.begin(), b.end())

64int

    long long ll;
    scanf("%I64d", &ll);
    printf("%I64d", ll);

lower_bound(a,a+n,x)

二分查找,查找大于或等于x的第一个位置,只能查找vector<>数组,返回值为vector<>::iterator指针

unique(vector1.begin(),vector1.end())

unique就是让连续的相同值变成一个

binary_search (v.begin(), v.end(), 6, myfunction)

bool myfunction (int i,int j) { return (i<j); }

reverse(vector1.begin(),vector1.end())

find (myvector.begin(), myvector.end(), 30);

An iterator to the first element in the range that compares equal to val.
If no elements match, the function returns last.

equal_range

bounds=std::equal_range (v.begin(), v.end(), 20, mygreater);

bounds.first:is an iterator to the lower bound of the subrange of equivalent values,

bounds.second:its upper bound.

 // 30 30 20 20 20 10 10 10
  //       ^        ^

Non-modifying sequence operations:

for_each

void out(int i){
    cout << i << endl;
}

int main(){
    int a[] = {1, 2, 3, 5, 4};
    for_each(a, a+5, out);

    vector<int> b;
    b.push_back(1);
    b.push_back(2);
    b.push_back(3);
    for_each(b.begin(), b.end(), out);
    return 0;
}

find

    std::vector<int>::iterator it;
    it = find (myvector.begin(), myvector.end(), 30);

find_if

bool IsOdd (int i) {
  return ((i%2)==1);
}

std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);

find_first_of

bool comp_case_insensitive (char c1, char c2) {
  return (std::tolower(c1)==std::tolower(c2));
}

int main () {
  int mychars[] = {'a','b','c','A','B','C'};
  std::vector<char> haystack (mychars,mychars+6);
  std::vector<char>::iterator it;

  int needle[] = {'D'};

  // using default comparison:
  it = find_first_of (haystack.begin(), haystack.end(), needle, needle+1);

  if (it!=haystack.end())
    std::cout << "The first match is: " << *it << '\n';

  // using predicate comparison:
  it = find_first_of (haystack.begin(), haystack.end(),
                      needle, needle+1, comp_case_insensitive);

  if (it!=haystack.end())
    std::cout << "The first match is: " << *it << '\n';

  return 0;
}

常用库函数

sort

位置:algorithm
功能:给一个数组(或者一个 STL,这个会在第三章介绍)排序。
格式:sort(a+1,a+n+1,cmp);
说明:
a 是数组的名称,同时也是指向数组首地址的指针。
+1 或者+n+1 为地址偏移量,表示需要排序的范围。
也可以替换为其他 STL 迭代器。
cmp 是自己写的函数,格式如下:
bool cmp(Type a, Type b)
{
//比较方法,如果 a 应该在 b 前则返回 true。
}

unique

位置:algorithm
功能:去除一个容器(也可以是数组)内的所有重复元素。
格式:unique(a+1,a+n+1);
说明:
与 sort 函数类似。

__gcd
位置:algorithm
功能:求两个整数的最大公约数。
格式:__gcd(a,b);
说明:两个参数的类型必须相同。

next_permutation

位置:algorithm
功能:求下一个(字典序)排列
格式:next_permutation(s+1,s+n+1);
说明:
一定要保证参数 s 是一个排列。

strcmp

位置:cstring
功能:比较两个字符串
格式:strcmp(s1,s2)
说明:
相等返回 0,s1 字典序较小返回-1,较大返回 1。

memset

位置:cstring
功能:将内存区间的每一个字节(注意是字节而不是变量)赋值为给定数。
格式:memset(a,0,sizeof(a));
说明:
只能为整数数组赋值为 0/-1。
可以对字符数组任意赋值。

memcpy

位置:cstring
功能:将一个内存区间复制。
格式:memcpy(to,from,sizeof(to));

STL

lower_bound

功能:返回一个非递减序列[first, last)中的第一个大于等于值val的位置。
声明:lower_bound(ForwardIter first, ForwardIter last,const _Tp& val) -arraylistname

upper_bound

功能:算法返回一个非递减序列[first, last)中第一个大于val的位置。
声明:upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)

vector

功能:一个可变大小的数组。
声明:vector 变量名;
访问:变量名[位置](当数组用即可)
插入:变量名.push_back(变量);
说明:
它的本体是一个对象。

priority_queue

功能:堆
声明:priority_queue 变量名;
访问:变量名.top();(仅能访问堆顶元素)
插入:变量名.push(变量);
删除:变量名.pop();
说明:
类型需要定义<运算符。
注意 pq 实现的是反人类的大根堆,自定义。

set

功能:集合
声明:set 变量名;
访问:变量名.find(值);
插入:变量名.insert(值);
删除:变量名.erase(迭代器);
变量名.erase(值);
说明:
单次操作复杂度 O(logn)。

map

功能:映射
声明:map<源类型,目标类型> 变量名;
访问:变量名[源类型值](如果不存在该值则会进行插入。)
说明:
单次操作复杂度 O(logn)。

string

功能:灵活的字符串对象
声明:string 变量名;
赋值:变量名=”C 风格字符串常量”;
合并:变量名+变量名 2(例如 s1=”a”,s2=”b”,s1+s2=”ab”)
求长:变量名.length();(其余 STL 求大小均为变量名.size())
访问:变量名[位置](当数组用)
说明:不能作为 C 风格函数的参数。

原文地址:https://www.cnblogs.com/ishero/p/11136278.html

时间: 2024-11-05 14:41:04

CPP常用库函数以及STL的相关文章

C++常用库函数

C++常用库函数  转自:http://blog.csdn.net/sai19841003/article/details/7957115 1.常用数学函数 头文件 #include <math> 或者 #include <math.h>   函数原型 功能 返回值 int abs(int x) 求整数x的绝对值 绝对值 double acos(double x) 计算arcos(x)的值 计算结果 double asin(double x) 计算arsin(x)的值 计算结果 d

Lua 常用库函数

一.数学库 1. 随机数 math.randomseed(os.time());   -- 设置随机种子 for i=1, 100 do print(math.random(-1000,1000));   -- 随机区间 [-1000,1000], math.random(1000) 表示 [1,1000] end; 2. 最大,最小值 math.max   math.min 二.table 库 1. 插入和删除 a = {10,20,30}; print(unpack(a)); table.i

转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现

C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    char temp, *end 

deque的STL常用库函数

双向队列基本的库函数 是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪.向deque 两端添加或删除元素的开销很小.它不需要重新分配空间,所以向末端增加元素比vector 更有效. 1 定义: 2 deque<int> q; 3 q.front(); //返回第一个元素的引用 4 q.empty(); //返回真如果双向队列

c++常用库函数用法总结

在ACM中库函数是非常重要的,因为有很多很多通用的操作和结构啊,非常实用,有些时候还是要深入了解一下这些库函数,码上一些库函数还有他们通用的操作. 目录 math string algorithm vector set map queue stack 1.math (1)int abs(int) double fabs(double) 很简单的两个函数,对int和double取绝对值,没什么好水的. (2)double ceil(double num) double floor(double x

C++常用库函数 C函数库 cstdio

常用的C/C++函数库, cstdio(stdio.h) 标准输入输出库.C Standard Input and Output Library 1. 实例 1 #include <cstdio> 2 int main(){ 3 FILE * pfile; 4 char char1[20]; 5 for(int i=1;i<=10;i++){ 6 //用sprintf把文件(包括相对路径)的名字放到char1里面 7 sprintf(char1,"rename/%d.txt&q

C语言常用库函数总结

1.存储分配 2.随机数生成 3.数字转换 4.环境通信 5.搜索与排序 6.整型算术 7.多字节.宽字符和字符串转换 8.时间与日期 9.区域设置 10.其它 1.存储分配 void* malloc(size_t size); void* calloc(size_t elt_count, size_t elt_size); void* realloc(size_t *ptr, size_t size); void free(void *ptr); malloc函数分配足够大的内存区域长度(用s

python常用库函数 - 备忘

基础库 1. 正则表达式:re 符号 ()小括号 -- 分组 []中括号 -- 字符类,匹配所包含的任一字符 #注:字符集合把[]里面的内容当作普通字符!(-\^除外) {}大括号 -- 限定匹配次数 | 或 r'AC|D' -> AC或AD . 匹配任一字符(\ 除外) \. 匹配字符. ^ 脱字符 匹配输入字符串的开始位置 # r'^AC' $ 匹配字符串末尾 # r'AC$' \b 匹配一个单词的边界 (单词定义为字母,数字,下划线) :\B 与 \b相反 匹配非单词边界 \d 匹配任一数

stdio.h和stdlib的常用库函数

<stdlib.h>(C++的<cstdlib>) ? 1函数名称:calloc ? 2函数名称:free ? 3函数名称:malloc ? 4函数名称: realloc ? 5函数名称: rand ? 6函数名称: abort ? 8函数名称: getenv ? 9函数名称: putenv ? 10函数名称: labs ? 11函数名称: atof ? 12函数名称: atoi ? 13函数名称: atol ? 14函数名称:ecvt ? 15函数名称:fcvt <stdi