- 分享
15分钟速通C++知识点
- @ 2026-1-14 21:46:33
15分钟速通C++知识点
1.Vector
#include<iostream>
#include<map>
#include<set>
#include<string>
#include<vector>
using namespace std;
int main()
{
//vector<数据类型>数组名
//push_back()
//遍历vector
//find 查找vector中元素位置
//erase 删除vector中元素
int a[100];
vector<int> v;
v.push_back(1);//0
v.push_back(2);//1
v.push_back(2);//2
v.push_back(3);//3
//1 2 3
// v.size() 动态数组v中元素个数
//v.size()=3
for (int i = 0; i<v.size(); i++)
{
cout<<v[i]<<" ";//遍历vector
}
cout << "\n";
//find() 查找函数 查找最先出现元素的位置
// auto it=find(v.begin(),v.end(),x) 在数组v中查找x第一次出现的位置
auto it = find(v.begin(), v.end(),2)-v.begin();
//cout << it << '\n';
v.erase(v.begin() + it);//删除指针(迭代器)it的空间
for (int i = 0; i < v.size(); i++)//1 2 3
{
cout << v[i] << " ";//遍历vector
}
return 0;
}
set&multiset
#include<iostream>
#include<map>
#include<set>
#include<string>
#include<vector>
using namespace std;
int main()
{
//set的性质
//1.不重复{1,1,2,3}
//2.自动排序(从小到大)
set<int>st;//定义一个名称为st的set容器
//set的基本操作
//1.st.insert(x); 往st容器中塞元素
//2.st.erase(x); 删除st容器中值为x的元素
st.insert(2);//把2塞进st
st.insert(1);//1 2
st.insert(1);//出现重复元素则自动屏蔽 1 2
st.erase(1);//删除1
for (auto it : st) cout << it << ' ';//1 2
cout << endl;
multiset<int>mst;
mst.insert(2);
mst.insert(1);
mst.insert(1);
mst.erase(1);
for(auto it : mst) cout << it << ' ';//1 1 2
return 0;
}
Map&multimap
#include<iostream>
#include<map>
#include<set>
#include<string>
#include<vector>
using namespace std;
int main()
{
//1.map<type,type>mp 定义和性质
//vector<int>v;
//set<int>st;
/*
map<int,int>mp;//定义了一个叫mp的map<int,int>容器
//2.map的存储
mp[100000000001]=82,mp[100000000002]=80, mp[100000000003]=65;
//输出10000000001的成绩
if(mp.find(100000000003)==mp.end())
{
cout << "没有此人信息!" << endl;
}
else
{
cout << mp[100000000001] << endl;
}
*/
//3.map的访问
//储存一个班级学生的姓名和对应的成绩
//xiaoming 85 xiaohong 65
//int a[100000000005];
//a[100000000001] = 82, a[100000000002] = 80, a[100000000003] = 65;
map<string, int>mp;
mp["xiaoming"] = 85, mp["xiaohong"] = 65;//定义了一个叫mp的map<string,int>容器
cout << mp["xiaohong"] << endl;
map<string, int>::iterator it;//定义了一个map<string,int>类型的迭代器it
for(it=mp.begin();it!=mp.end();it++)
{
cout << it->first << " " << it->second << "\n";
//cout<< (*it).first << " " << (*it).second << "\n";
}
/*
map<int, int>mp1;//map自动按frist的字典序从小到大排序
mp1[2] = 23, mp1[1] = 32;
map<string, int>::iterator it;//定义了一个map<string,int>类型的迭代器it
//xiaoliang
//cout<< mp["xiaoliang"] << endl;
//map的遍历
for (auto it : mp) {
cout << it.first <<" " <<it.second<< "\n";
}
for (auto it : mp1) {
cout << it.first << " " << it.second << "\n";
}
*/
//map的type拓展
map<vector<int>, int>s;
return 0;
}
Vector存图
#include<iostream>
#include<map>
#include<set>
#include<string>
#include<vector>
using namespace std;
int main()
{
int n, m;//n表示点数,m表示边数
vector<int>v;//定义了一个名为v的动态数组
int a[10][10];//定义了一个二维数组
vector<int>v1[105];//定义了名为v1的二维动态数组
//每个v1[i]都是一个vector
//v[1]
//v1[1].push_back(2);
//v1[1].push_back(11);
//for(int i=0;i<v1[1].size();i++) cout<<v1[1][i]<<" ";
//1-2 1-3 2-3 2-4 3-4
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int from, to;
cin >> from >> to;
v1[from].push_back(to);
v1[to].push_back(from);
}
for (int i = 1; i <= n; i++)//遍历1-n号节点
{
for (int j = 0; j < v1[i].size(); j++)//遍历i号节点的所有邻接节点
{
int x = v1[i][j];
cout << i << " " << x << "\n";
}
}
return 0;
}
时间复杂度&空间复杂度
#include<iostream>
#include<map>
#include<set>
#include<string>
#include<vector>
using namespace std;
int main()
{
//时间复杂度:对于程序大致运行时间的描述
int a, b, n, m;
cin >> a >> b;
if (a > b) {//O(1)
a++;
}
for (int i = 1; i <= n; i++) {//O(n)
a++;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {//O(nm)
a++;
}
}
//1s 2s
//1e8 = 10 ^ 8;
for (int i = 1; i <= 1e8; i++) {//1s
a++;
}
//空间复杂度:对于程序大致运行空间的描述
//bety = b;
int a;//int占4byte
//题目中经常出现的空间限制 128mb 256mb 512mb 1gb
//1mb-1024kb
//1kb=1024b
//1mb=1024*1024b=1e6(10^6)b
//1mb可以开1e6/4=2.5*10^5个int类型的变量
//256mb=256*2.5*10^5=6e7大小的数组
//128mb=256/2=3e7
return 0;
}
Pair
#include<bits/stdc++.h>
using namespace std;
int main(){
//创建 pair
//方式一
pair<string,int>p;
p.first="hello";
p.second=120;
//方式二
pair<double,string>p1(3.14,"hello");
//cout<<p1.first<<" "<<p1.second;
//方式三
pair<string,int>p3;
p3=make_pair("world",123);
cout<<p3.first<<" "<<p3.second;
return 0;
}
Stack
#include<stack>
#include<iostream>
using namespace std;
int main() {
stack<int>a;//创建一个叫a的int型栈
//入栈
a.push(1);//放入1到栈a中
a.push(2);//放入2到栈a中
a.push(3);//放入3到栈a中
//1 2 3
//返回栈长度
cout << "栈的长度:" << a.size() << "\n";
//返回栈顶元素
cout << "栈的顶部元素(一):" << a.top() << "\n";
//出栈
a.pop();
cout << "出栈一次.\n";
//再次返回栈顶元素
cout << "栈的顶部元素(二):" << a.top() << "\n";
//出栈二次
a.pop();
cout << "出栈二次.\n";
//此时栈非空
if (a.empty()) cout << "栈为空.\n";
else cout << "栈非空.\n";
//出栈三次
a.pop();
cout << "出栈三次.\n";
//此时栈为空
if (a.empty()) cout << "栈为空.\n";
else cout << "栈非空.\n";
return 0;
}
IT迭代器(iterstor)
#include<vector>
#include<iterator>
#include<iostream>
using namespace std;
struct st{
string s;
int y,m,d;
};
vector<st>a(4);
//iterator(it迭代器)
//迭代器->指针
int main() {
st c;
c.s="xie";
a.push_back(c);
a[0].s="zhang";
a[1].s="wang";
a[2].s="li";
a[3].s="ju";
vector<st>::iterator it;
//it=a.begin();
//cout<<*(it);
for(it=a.begin();it!=a.end();it++){
cout<<it->s<<" ";//用结构体时要用->访问成员,平时用*it
}
// *:返回元素地址 \
++:迭代器指向下一个元素 \
==和!=:判断地址 \
=:迭代器赋值(两个迭代器可以相互赋值)
return 0;
}
0 条评论
目前还没有评论...
京公网安备 11011102002149号