C++常用知识点

vector的基本用法:
(1)vector obj;创建一个type类型的空的一维vector数组
(2)vector obj(N, 0):创建一个type类型元素个数为N且初始值为0的一维vector数组//(N, 0)<==> (N)
(3)vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t
(4)vector<vector > obj(N); //定义二维动态数组大小N行
(5)vector<vector > obj(N, vector(M,0)); //定义二维动态数组N行M列且初始化为0
(6)obj.push_back(const T& x):向量尾部增加一个元素X
(7)obj.pop_back():删除向量中最后一个元素
(8)obj.void clear():清空向量中所有元素
(9)reference at(int pos):返回pos位置元素的引用
(10)reference front():返回首元素的引用
(11)reference back():返回尾元素的引用
(12)begin():返回向量头指针,指向第一个元素
(13)end(); 返回向量尾指针,指向最后一个元素的下一个位置
(14)int size() const:返回向量中元素的个数
(15)int capacity() const:返回当前向量张红所能容纳的最大元素值
(16)int max_size() const:返回最大可允许的vector元素数量值
(17)reverse(const &a, const &b);把数组从a到b位置的元素颠倒过来

1.pop_back()&push_back(elem)实例在容器最后移除和插入数据

#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int>obj;//创建一个向量存储容器 int
    for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 
    {
        obj.push_back(i);
        cout<<obj[i]<<",";    
    }
 
    for(int i=0;i<5;i++)//去掉数组最后一个数据 
    {
        obj.pop_back();
    }
 
    cout<<"\n"<<endl;
 
    for(int i=0;i<obj.size();i++)//size()容器中实际数据个数 
    {
        cout<<obj[i]<<",";
    }
 
    return 0;
}

在这里插入图片描述
2.clear()清除容器中所有数据

#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int>obj;
    for(int i=0;i<10;i++)//push_back(elem)在数组最后添加数据 
    {
        obj.push_back(i);
        cout<<obj[i]<<",";
    }
 
    obj.clear();//清除容器中所以数据
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<endl;
    }
 
    return 0;
}

在这里插入图片描述
3.排序

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    vector<int>obj;
 
    obj.push_back(1);
    obj.push_back(3);
    obj.push_back(0);
 
    sort(obj.begin(),obj.end());//从小到大
 
    cout<<"从小到大:"<<endl;
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";  
    } 
 
    cout<<"\n"<<endl;
 
    cout<<"从大到小:"<<endl;
    reverse(obj.begin(),obj.end());//从大到小 
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";
    }
    return 0;
}

在这里插入图片描述
1.注意 sort 需要头文件 #include
2.如果想 sort 来降序,可重写 sort

bool compare(int a,int b) 
{ 
    return a< b; //升序排列,如果改为return a>b,则为降序 
} 
int a[20]={2,4,1,23,5,76,0,43,24,65},i; 
for(i=0;i<20;i++) 
    cout<< a[i]<< endl; 
sort(a,a+20,compare);

4.二维数组两种定义方法
方法一:

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
 
int main()
{
    int N=5, M=6; 
    vector<vector<int> > obj(N); //定义二维动态数组大小5行 
    for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0 
    { 
        obj[i].resize(M); 
    } 
 
    for(int i=0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

方法二:

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
 
int main()
{
    int N=5, M=6; 
    vector<vector<int> > obj(N, vector<int>(M)); //定义二维动态数组5行6列 
 
    for(int i=0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

在这里插入图片描述
map的基本用法:

本篇文章只是简单介绍map()的用法。尤其在查字典方面的应用。并不追求内部源码的研究和所有内容的完整性。

1.为什么要学习map()?

答:Map是STL的一个关联容器,

关联容器的优点是:它提供了对元素的快速访问。例如(最大匹配分词时,查字典效率更高)

map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。

2.map的简介

map把值与键关联在一起,可以使用键来查找词。例如:键可以表示学号,而值 可以对应姓名。

3.map的使用

使用map得包含map类所在的头文件 #include //注意,STL头文件没有扩展名.h

4.map的建立

map<int, string> t;

5.map数据插入:

t[int]=字符串)(map内部对[]进行了重载)

6.map的大小

Int nSize = mapStudent.size();

7.数据的遍历

先定义一个迭代器(广义指针):

map<int,string>::iterator iter;

然后输出map的键和值。

iter->first 值的是键,

iter->second指的是值。

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
	map<int, string> t;
	t[0] = "1";
	t[1] = "188";
	map<int,string>::iterator iter;
	for (iter = t.begin(); iter != t.end(); iter++) {

		cout << iter->first << "->" << iter->second << endl;
	}
	system("pause");
	return 0;

8.map的查字典()

两种方法:

1.第一种:用count函数(count函数是map对象自带的函数)来判定关键字是否出现。其缺点是无法定位数据出现位置,由于map的特性,一对一的映射关系,就决定了count函数的返回值只有两个,要么是0,要么是1,出现的情况,当然是返回。

2.第二种:用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器。举例说明:

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
	map<int, string> t;
	t[0] = "1";
	t[1] = "188";
	map<int,string>::iterator iter;
	iter= t.find(0);
	if (iter!= t.end()) {
		cout << "字典中有这个值" << endl;
	}
	else {
		cout << "字典中没有这个值" << endl;
	}
	system("pause");
	return 0;
}

9.map的基本操作函数:

C++ map是一种关联式容器,包含“关键字/值”对

begin() 返回指向map头部的迭代器

clear() 删除所有元素

count() 返回指定元素出现的次数

empty() 如果map为空则返回true

end() 返回指向map末尾的迭代器

equal_range() 返回特殊条目的迭代器对

erase() 删除一个元素

find(键) 查找一个元素

get_allocator() 返回map的配置器

insert() 插入元素

key_comp() 返回比较元素key的函数

lower_bound() 返回键值>=给定元素的第一个位置

max_size() 返回可以容纳的最大元素个数

rbegin() 返回一个指向map尾部的逆向迭代器

rend() 返回一个指向map头部的逆向迭代器

size() 返回map中元素的个数

swap() 交换两个map

upper_bound() 返回键值>给定元素的第一个位置

value_comp() 返回比较元素value的函数

10.迭代器的一些基本用法

(1).C++中每种容器定义了自己的迭代器如vector:

  #include<bits/stdc++.h>
  int main(){
  std::vector <int> ::iterator it;
  }
  ----------------------------------//注意
  #include<bits/stdc++.h>
  using namespace std;
  int main(){
  (std::)vector <int> ::iterator it;
  }

(2).每种容器都定义了一种名为begin和end的函数,用于返回迭代器:

  #include<bits/stdc++.h>
  vector<int> a;		  // map, stack........容器
  int main(){
  int n;
  cin >> n;
  for(int i = 0; i < n; i++){
                                                 // 输入
  }
  for( std::vector <int> ::iterator it = a.begin; it != a.end; it++){
                                                                 //调用
  }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值