蓝桥杯备战笔记 string 模板函数 及动态数组的使用
来源:互联网 发布:最近好听的网络歌 编辑:程序博客网 时间:2024/05/21 11:29
1,string类型声明:
#include<string>//不能为cstring string.h
string a[10]
for(int i=0;i<10;i++)
cin>>a[i];
可以给10个字符串赋值
但
int n;
cin>>n;
string a[n];
for(int i=0;i<10;i++)
cin>>a[i];
出错 a[n]中n必须为数字;
2,template<typedef T>的使用 小例子:
#include <iostream>using namespace std;
template <typename T>
class classA
{
private :
T i;
T j;
public :
classA(T a,T b):i(a),j(b){cout<<"classA"<<endl;}
~classA(){};
T set(T a,T b);
void show();
};
template <class T>
T classA<T>::set(T a,T b)
{
this->i=a;
this->j=b;
return 0;
}
template <class T>
void classA<T>::show()
{
cout << this->i<<endl;
cout << this->j<<endl;
}
int main(int argc, char const *argv[])
{
classA<int> a(6,6);
a.show();
a.set(9,10);
a.show();
return 0;
}
3,vector的动态数组用法:
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
用法:
1.文件包含:
首先在程序开头处加上#include<vector>以包含所需要的类文件vector
还有一定要加上using namespace std;
2.变量声明:
2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。
2.2 例:用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a.同理想用向量代替三维数组也是一样,vector <int**>a;再往上面依此类推.
3.具体的用法以及函数调用:
3.1 如何得到向量中的元素?其用法和数组一样:
例如:
vector <int *> a
int b = 5;
a.push_back(b);//该函数下面有详解
cout<<a[0]; //输出结果为5
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据
3.2 详细的函数实现功能:其中vector<int> c.
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.erase(pos) 删除pos位置的数据
c.erase(beg,end) 删除[beg,end)区间的数据
c.front() 传回第一个数据。
c.insert(pos,elem) 在pos位置插入一个elem拷贝
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.resize(num) 重新设置该容器的大小
c.size() 回容器中实际数据的个数。
c.begin() 返回指向容器第一个元素的迭代器
c.end() 返回指向容器最后一个元素的迭代器
例子:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
vector<char> vec;
string ch;
vec.push_back(' ');
cin>>ch;
for(int i=0;i<ch.length();i++)
{
vec.push_back(ch[i]);
if( vec.back()-1 == *(vec.end()-2) || vec.back()-2 == *(vec.end()-2))
{
vec.pop_back();
vec.pop_back();
}
}
if(vec.size()==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
(检查这行括号是否配对S中只含有"[","]","(",")";)
- 蓝桥杯备战笔记 string 模板函数 及动态数组的使用
- string及数组的相关笔记
- String类型的使用及数组
- CCF 模板生成系统 字符串string函数find的使用
- 使用vector和string代替动态申请的数组
- vector string及数组使用
- CArray 动态数组模板类学习笔记
- 蓝桥杯备战笔记:代码中常遇到的小问题(1)
- 蓝桥杯 动态数组的使用
- [备战NOI同步赛]适合ACM-ICPC使用的进制转换模板
- 备战笔记
- C#中String str与String str=“”的区别 及 函数的参数数组。
- 如何动态的定义及使用数组呢?
- 动态字节数组的转换 Tbytes String、ANSIString及TBytes之间的转换
- 函数模板的使用
- 模板函数的使用
- 模板函数的使用
- 函数模板的使用
- 3D自定义翻转View--TagCloudView
- 折半查找法/C语言版
- Objective-C语法之代码块(block)的使用
- 【杭电-oj】-2011-多项式求和
- 开始
- 蓝桥杯备战笔记 string 模板函数 及动态数组的使用
- SQL Server 中 RAISERROR 的用法
- POJ-1936-All in All( 最长公共子序列 && 水题 )
- Dorado7环境配置启动,Tomcat7启动正常,http://localhost:8080不能正常访问,返回404错误
- Linux 2.6.19.x 内核编译配置选项简介(一)
- 【杭电-oj】-2012-素数判定
- java 整合 Redis
- Mysql-5.7-winx64 免安装版本安装
- 集体智慧编程——博客文章聚类-Python实现