STL容器
啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊
#include<iomanip>
#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容器的更多相关文章
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...
- STL容器删除元素的陷阱
今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...
- 【转】c++中Vector等STL容器的自定义排序
如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1.Copy构造函数 2.赋值=操作符 3.能够销毁对象的析构函数 另外: 1. ...
- GDB打印STL容器内容
GDB调试不能打印stl容器内容,下载此文件,将之保存为~/.gdbinit就可以使用打印命令了. 打印list用plist命令,打印vector用pvector,依此类推. (gdb) pvecto ...
- STL容器迭代器失效分析
连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...
- STL容器的适用情况
转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...
- STL容器的遍历删除
STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...
- STL容器与配接器
STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector 行为类似于数组,但可以根据要求 ...
- STL容器的本质
http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...
随机推荐
- iOS开发~CocoaPods使用详细说明
一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...
- 个人制作-css+html旋转立方体的制作
源代码: <!DOCTYPE html><html><head> <title></title> <meta charse ...
- Bootstrap模态框(MVC)
BZ这篇博客主要是为大家介绍一下MVC如何弹出模态框.本文如果有什么不对的地方,希望大神们多多指教,也希望和我一样的小菜多多学习.BZ在这里谢过各位. 首先要在页面加上一个点击事件: @Html.Ac ...
- PHP mysql_fetch_array() 函数
PHP mysql_fetch_array() 函数 从结果集中取得一行作为关联数组,或数字数组,或二者兼有.返回根据结果集取得的行生成的数组,如果没有更多行则返回false. 提示:有很重要的一点必 ...
- Linux达人养成第一季
Linux简介 一.Linux发展史 二.开源软件简介 三.Linux应用领域 四.Linux学习方法 五.Linux与Windows的不同 六.字符界面的优势 Linux系统安装 一.虚拟机安装 二 ...
- 关于 一开始不懂得 hosts配置。
是转载别人的. 原文: http://my.oschina.net/cxz001/blog/298228 感谢分享: 一开始抄着陪着win下的hosts文件.然后配置 apache中的hosts ...
- LINUX测试环境部署manggo(六)
安装配置manggo 复制安装包mongodb-linux-x86_64-2.6.5.tgz到/usr/local/目录下,或者如果有网络可以直接使用wget命令下载安装包到/usr/local目录下 ...
- [原创]cocos2d-x研习录-第三阶 背景音乐和音效
在游戏中,音效是一个不可或缺的部分,它可以为我们的游戏增加效果.音效在游戏中一般分为长时间的背景音乐和短促的特效音乐.Cocos2D-x支持多种常见音乐格式(mp3.wav等). Cocos2D-x提 ...
- (转) Summary of NIPS 2016
转自:http://blog.evjang.com/2017/01/nips2016.html Eric Jang Technology, A.I., Careers ...
- InfoPi简介、试用链接、资料索引
InfoPi的定位是“个人信息收集服务器”. 用户可以灵活地定义信息的来源,比如从网页抓取感兴趣的信息.订阅博客.从温度传感器读取数据,等等. 然后,把收集到的信息用web的方式展示出来. 可以把In ...