猫史档案馆


【C++程序设计】强大的技巧!为解决问题带来方便

用户:爵士OIer爵士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个内产生随机数


回复

上一页1 页 / 共 1下一页
爵士OIer爵士OIer

排版貌似有错误,

#include<stdio.h>
int main() {
    printf(
    "                ********\n"
    "               ************\n"
    "               ####....#.\n"
    "             #..###.....##....\n"
    "             ###.......######              ###            ###\n"
    "                ...........               #...#          #...#\n"
    "               ##*#######                 #.#.#          #.#.#\n"
    "            ####*******######             #.#.#          #.#.#\n"
    "           ...#***.****.*###....          #...#          #...#\n"
    "           ....**********##.....           ###            ###\n"
    "           ....****    *****....\n"
    "             ####        ####\n"
    "           ######        ######\n“
    );
    return 0;
}

这是第一点:介绍一种 C 语言中常用的多行字符串写法。

点赞0


评论


淳朴的流星猫ofTt淳朴的流星猫ofTt

d-d

点赞0


评论