c++基础知识

deque的用法

#include<deque>

deque<type> d; //定义一个deque

push_back()//在队列的尾部插入元素。
push_front()//在队列的头部插入元素。
pop_back()//删除队列尾部的元素。
pop_front()//删除队列头部的元素。
back()//返回队列尾部元素的引用。
front()//返回队列头部元素的引用。
clear()//清空队列中的所有元素。
empty()//判断队列是否为空。
size()//返回队列中元素的个数。
begin()//返回头位置的迭代器
end()//返回尾+1位置的迭代器
rbegin()//返回逆头位置的迭代器 
rend()//返回逆尾-1位置的迭代器 

//通过下标遍历
for(int i=0;i<d.size();i++)
{
  cout<<d[i]<<" ";
}
//通过迭代器遍历
deque<type>::iterator it;
for(it=d.begin();it!=d.end();it++)
{
	cout<<*it<<" ";
}
//foreach遍历
for(int it:d)
{
   cout<<it<<" ";
}

stack

stack<type> s;

empty() //堆栈为空则返回真 
pop() //移除栈顶元素 
push() //在栈顶增加元素 
size() //返回栈中元素数目 
top() //返回栈顶元素 

向量容器

#include<vector>
vector<type> vec;//可理解为动态数组

vec.size();
vec.push_back();
sort(vec.begin(), vec.end());//对动态数组vector排序

//动态数组去重
auto its = unique(vec.begin(), vec.end());
vec.erase(its, vec.end());//感觉是擦除多余元素

//find函数
auto f = find(vec.begin(), vec.end(), 5);//返回一个迭代器(可以理解为地址), *f 获取查找的值,
if (f != vec.end()) {
    cout << "找到" << 5 << " 的位置在 " << f - vec.begin() << endl;//计算位置也可用distance(vec.begin(), f)
}
else {
    cout << "Not found" << endl;
}

//通过迭代器遍历
vector<int>::iterator it;
for (it = vec.begin();it != vec.end();it++)
{
    cout << *it << " ";
}
//通过下标遍历
for(int i=0;i<vec.size();i++)
{
  cout<<vec[i]<<" ";
}

set

#include<set>
//自定义排序:降序
class MyCompare
{
public:
    bool operator()(int v1, int v2)const {
        return v1 > v2;
    }
};

set<type,MyCompare> s1;//默认排序规则为从小到大,也可自定义排序
s1.insert(val);

size();        //返回容器中元素的数目
empty();       //判断容器是否为空
clear();       //清除所有元素  

auto s1 = myset.find(key);//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
if (s1 != myset.end())
{
    cout << "找到了元素 : " << *s1 << endl;
}
else
{
    cout << "未找到元素" << endl;
}

count(key);    //统计key的元素个数

erase(pos);         //删除pos迭代器所指的元素,返回下一个元素的迭代器。比如pos = s1.begin()
erase(elem);        //删除容器中值为elem的元素。

map

//基本与set用法一致
map<string,int> maps;
m[123] = "dd";// 用数组方式插入

map<char, int> myMap = {{key, value}};//初始时有值

//迭代遍历
map< string,int>::iterator it;
for(it = m.begin(); it != m.end(); it++)
    cout<< it->first <<" "<< it->second <<endl;//输出key 和value值

常用算法

//sort排序
int arr[] = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 };
int n = sizeof(arr) / sizeof(arr[0]);//数组长度
sort(arr, arr + n);//升序排序,两个参数:起始位置,结束位置

//reverse逆置
reverse(arr, arr + n);

//复制
int list[] = { 2,4,6,8,12 };
int m = sizeof(list) / sizeof(list[0]);
vector<int> vec(m);
copy(list, list + m, vec.begin());

字符串

//查找
string str = "Hello,world!";
str.length() 或者 str.size();
str[i];//获取字符
str.substr(pos,len);//截取字符串
(char)tolower(str[0]);
(char)toupper(str[1]);
to_string(val)//将数字转换为字符串类型的变量

reverse(str.begin(), str.end());//反转字符串

cout << str.find("world") << '\n';

// 使用 find_last_of 查找最后一个匹配的位置 或 使用 find_first_of 查找第一个匹配的位置
auto pos = str.find_last_of("o");

if (pos != string::npos) {
    cout << "last position: " << pos << endl;
}
else {
    cout << "no result." << endl;
}

动态创建数组

cin>>rows;
//二维数组
int** angle = new int* [rows];
for (int i = 0; i < rows; i++) {
    angle[i] = new int[rows];
}

vector<vector<int>> angle(rows);
for (int i = 0; i < rows; i++) {
    angle[i].resize(rows);
}

//一维数组
int *arr = new int[rows];

链表

typedef struct node{
   type data;
   struct node *link;
}LNode,*LinkList;//命名时LNode *p和LinkList p等效
posted @   范腿腿  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示