用户:
爵士OIer查看:1 回复:2 评论:1 创建时间:2019-11-02T12:04:29
介绍一种 C 语言中常用的多行字符串写法。
二、
#define f(i,j,n) for(i=j;i<=n;i++) //for循环简写
STL:
#define f(i,j,n) for(i=j;i<=n;i++) //for循环简写
一、基本概念
容器:可容纳各种数据类型的通用数据结构,是类模板
迭代器:可用于依次存取容器中的元素,类似与指针
算法:用于操作容器中的元素的函数模板
sort() 对一个vector中的数据进行排序
find() 搜索一个list中的对象
例 int array[100];
sort(array,array+70); 对前70个元素排序
#include<stdio.h>
int main() {
printf(
" ********\n"
" ************\n"
" ####....#.\n"
" #..###.....##....\n"
" ###.......###### ### ###\n"
" ........... #...# #...#\n"
" ##*####### #.#.# #.#.#\n"
" ####*******###### #.#.# #.#.#\n"
" ...#***.****.*###.... #...# #...#\n"
" ....**********##..... ### ###\n"
" ....**** *****....\n"
" #### ####\n"
" ###### ######\n“
);
return 0;
}
二、容器
顺序容器
vector, deque, list
动态数组,双向队列,双向链表
关联容器
通常以平衡二叉树方式实现,插入和检索时间都是O(log(N))
set, multiset, map, multimap
multiset允许相同元素存在
map有点像python中的dictionary,multimap允许key值相同的元素存在
容器适配器
stack栈, queue队列,
stack后进先出,queue先进先出
顺序容器和关联容器中都有的成员函数
begin 返回第一个元素的迭代器
end 返回最后一个元素后面的迭代器 访问会出错
rbegin 返回最后一个元素的迭代器
rend 返回第一个元素前面的迭代器
erase 从容器中删除一个或几个元素
clear 从容器中删除所有元素
顺序容器常用成员函数
front 返回容器中第一个元素的引用
back 返回容器中最后一个元素的引用
push_back 在容器末尾增加新元素
pop_back 删除容器末尾的元素
erase 删除迭代器指向的元素,返回删除元素后面的那个元素的迭代器
三、迭代器
用法和指针类似
有const和非const两种
定义方法
容器类名::iterator 变量名;
或:
容器类名::const_iterator 变量名;
访问一个迭代器指向的元素:
* 迭代器变量名
迭代器使用示例:
#include <vector>
#include <iostream>
using namespace std;
int main(){
vecotr<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::const_iterator i;
//const_iterator不能通过访问修改
//iterator 可以通过*i来修改容器内的元素
//reverse_iterator 反向迭代器
for(i=v.begin();i!=v.end();++i)
cout<<*i<<",";
cout<<endl;
}
输出结果:
1,2,3,4,
迭代器类型
分为双向和随机访问
vector 随机访问
deque 随机访问
list 双向
set 双向
四、算法
大多数在<algorithm>中定义,STL提供查找、排序等。
find(v.begin(),v.end(),3); //左闭右开区间查找
binary_search 二分查找
sort 排序
rand()%100 在0~100个内产生随机数
爵士OIer排版貌似有错误,
#include<stdio.h>
int main() {
printf(
" ********\n"
" ************\n"
" ####....#.\n"
" #..###.....##....\n"
" ###.......###### ### ###\n"
" ........... #...# #...#\n"
" ##*####### #.#.# #.#.#\n"
" ####*******###### #.#.# #.#.#\n"
" ...#***.****.*###.... #...# #...#\n"
" ....**********##..... ### ###\n"
" ....**** *****....\n"
" #### ####\n"
" ###### ######\n“
);
return 0;
}
这是第一点:介绍一种 C 语言中常用的多行字符串写法。
点赞0
评论