啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊

#include<iomanip>

主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常见的控制函数的:
dec 置基数为10 相当于"%d"
hex 置基数为16 相当于"%X"
oct 置基数为8 相当于"%o"
setfill( 'c' ) 设填充字符为c
setprecision( n ) 设显示有效数字为n位
setw( n ) 设域宽为n个字符
cout.setf(ios::fixed);
cout<<setprecision(n);输出的数字为n位于长度,不全的地方用0补全
 
 
 
对于某些竞赛题目,会很恶心的用输入输出的格式来考验是否会超时,而cin.cout确实是比scanf.printf慢一些,而string也会比char慢会超时
ios::sync_with_stdio(false);就是给cin。cout加速的东东。。
 
 
 
string类型只能用cin,cout来输入输出,用printf,scanf是不可以的
 
 
fabs(double) abs(int);的绝对值
 
strchr(char a[],char b)用于返回a中b字符首次出现的位置及该字符串后面的字符
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char a[], b[];
cin >> b;
strcpy(a, b);
cout << a << ":::" << b << endl;
strcat(a, b);
cout << a << endl;
char *q = strchr(a, 'a');///在这里该函数返回'a'出现的首地址,当找不到‘a’时返回NULL,具体看下图
cout << q << endl;
cout << strcmp(a, b) << ":::" << strcmp(b, a) << ":::" << strcmp(a,a) <<endl;
int l = strlen(a);
cout << l << endl;
}

在网上查到过,在好多论文中提到过memset中存在某种机制,将会使得它比for的循环赋值快一些

全排列函数next_permutation();用于求算字符串或者数组的全排列,

**但是尤为要注意的一点是该函数只会返回从给定的字符串或者数组字典序之后的序列,也就是说当我们想要求出全排列的时候我们应该先为数组或者字符串排序

 #include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string s="bca";
sort(s.begin(),s.end());
cout<<s<<endl;
while(next_permutation(s.begin(),s.end()))
{
cout<<s<<endl;
}
}

排序时的结果

未排序时的结果

没有第8行时的结果

排序int型数组

 #include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[]= {,,};
sort(a,a+);
cout<<a[]<<" "<<a[]<<" "<<a[]<<endl;
while(next_permutation(a,a+))
{
cout<<a[]<<" "<<a[]<<" "<<a[]<<endl;
}
}

在比赛中积累的经验得知,这个求全排列的函数比我们自己写的用dfs求的全排列要快

对于平时的时间要求较高的题目,我们会用到二分查找,但是对于边界我们却总是不能正确找到,这里有一个二分查找的函数,它的时间复杂度时log级别的

lower_bound(a,a+n,b);求该函数返回在a数组中b首次出现的地址

upper_bound(a,a+n,b);求该函数返回在a数组中b末次出现的地址

**要注意的一点是对于a数组在它传递给该函数的时候要严格遵守升序排列才能找到,因为这个函数时严格遵守二分查找的法则,否则就会报错

 #include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[]={,,,,};
cout << lower_bound(a,a+,)-a << endl;
cout << upper_bound(a,a+,)-a << endl;
}

对于string类型用sort排序方法

string s="abc";

sort(s.begin(),s.end());

STL容器的更多相关文章

  1. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  2. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...

  3. 【转】c++中Vector等STL容器的自定义排序

    如果要自己定义STL容器的元素类最好满足STL容器对元素的要求    必须要求:     1.Copy构造函数     2.赋值=操作符     3.能够销毁对象的析构函数    另外:     1. ...

  4. GDB打印STL容器内容

    GDB调试不能打印stl容器内容,下载此文件,将之保存为~/.gdbinit就可以使用打印命令了. 打印list用plist命令,打印vector用pvector,依此类推. (gdb) pvecto ...

  5. STL容器迭代器失效分析

    连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...

  6. STL容器的适用情况

     转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...

  7. STL容器的遍历删除

    STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...

  8. STL容器与配接器

    STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector                             行为类似于数组,但可以根据要求 ...

  9. STL容器的本质

    http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...

随机推荐

  1. objdump 分析

    objdump -H 显示如下: 一般常用的是 objdump -x 显示文件头信息 objdump -d 反汇编代码段代码 objdump -D 反汇编所有代码 用法:objdump <选项& ...

  2. poj1852 Ants ——想法题、水题

    求最短时间和最长时间. 当两个蚂蚁相遇的时候,可以看做两个蚂蚁穿过,对结果没有影响.O(N)的复杂度 c++版: #include <cstdio> #define min(a, b) ( ...

  3. [Beta] postmortem

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决网站前端的数据处理以及获取问题,定义的很清楚,对于典型用户也比较清晰,因为主要只有一个用户,所以对于 ...

  4. ns115 step by step

    一,安装环境: sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev lib ...

  5. Examples of complexity pattern

    O(1):constant - the operation doesn't depend on the size of its input, e.g. adding a node to the tai ...

  6. LeetCode-Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  7. (转)The Neural Network Zoo

    转自:http://www.asimovinstitute.org/neural-network-zoo/ THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, ...

  8. PHP 数组转码

    /** * 数组转码 * @param array $arr 要转码的数组 * @param string $in_charset 输入的字符集 * @param string $out_charse ...

  9. exiv2 如何改变时间戳

    有很多c/c++库可以实现jpeg的exif信息的读取,比如libexif或者CxImage等.但如果我们对jpeg进行有关处理后,想在写入文件时保留原有的exif信息(比如拍摄时间等)就有点棘手了. ...

  10. mybatis实战教程(mybatis in action)之三:实现数据的增删改查

    前面已经讲到用接口的方式编程.这种方式,要注意的一个地方就是.在User.xml  的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.I ...