C++学习(2)数据处理

short 至少16位,int至少与其一样
long 至少32位,且至少与int一样
long long 至少64位,且至少与 long 一样长

限定符:const

const int man=10;

man变量将被固定为10,且后续无法修改,和#define 意思差不多

浮点类型

注意:默认情况下,8.24和2.4E8这样的浮点类型都属于 double 类型
若希望变量是 float 类型,需要在添加 f 或者 F 的后缀,即 8.24f

类型转换

特别写法

int guess(3.999);//guess输出为3

强制转换:

(int)num; //c语言的强制转化
int(num); //C++的强制转化
static_cast<typeName> (value) ;

以下的写法是C++用于将值从一种数值类型转换为另外一种数值类型
注:string 类型 不包括在内

static_cast<typeName> (value)
如:
char num = 'Z';
int ss = 10;
cout << " " << static_cast<int>(num);
cout << endl;
cout << " " << static_cast<float>(ss);
cout << endl;

数组

基本和C差不多
定义上:

int card[4] = {1,2,3,4};
int hand[4];
short total[] = {1,1,2};
double counting[4] {1,2,3,4};//可以省略“=”
int counts[10] ={};
int count2[20] {};

字符串

标准头文件:
#include<cstring>//使得C类型的string库
#include<string>//使得string库有效

常用函数:

函数名作用
strlen(string)读字符串长度
cin.getline(string , 20)读取输入的内容的前20个有效元素存入前面string类型变量
cin.get(string,20)
getline(cin,string类型变量)如此使用键盘输入将直接赋值给string类型变量,且大小会自动调节

string类型

函数说明
strcpy(参数1,参数2)将参数2包含的字符串复制到参数1
strcat(参数1,参数2)将参数2包含的字符串接到参数1字符串的末尾
strlen(参数)求参数包含的字符串的长度
string类型变量.size()以类方法求字符串长度

结构体

#include <iostream>
#include <cmath> //或者math.h
#include<cstring>
using namespace std;

int main()
{//结构体
	struct name_struct
	{
		int str1;
		float str2;
		string str3;
	};
	name_struct x1;//C++的定义写法
	struct name_struct x2;//C语言的定义写法
	x1.str1 = 10;
	x1.str2 = 20;
	x1.str3 = "xxx";
	//第二种赋值方法
	x2 = 
	{
	  10,
	  20,
	  "ssss"
	};
	//第三种赋值方法
	name_struct x3 {10,20,"sssss"};
	//结构体数组
	name_struct x4[3]=
	{
		{10,20,"qqqq"},//结构体元素0
		{11,22,"xxxx"},//结构体元素1
		{12,23,"xixi"}//结构体元素2
	};
	
}

还有一个叫做共用体(union)与结构体基本类似,可嵌套在struct结构中,多用于节省空间,但是在系统内存较大的地方基本用不到。

枚举类型

我反正觉的这个类型有些难理解,但是类似于结构体
枚举类型中的变量都是整型的(无法改),不对其中变量进行赋值的情况下,从第一个变量开始为0,第二个为1,依次+1;(所以是可以给枚举中的变量赋值的只是必须遵循先小后大的原则)

:赋值时,严格遵循枚举的范围,不能超过包含变量的最大整数值

enum MyEnum
	{
		first,//默认为first=0
		second,//默认为second=1
		xxxx,//默认为2
		ssss,//默认为3
		aaa=10,
		xooo,//默认为11
	};
	

用法:
在阅读代码时,时常遇到整型变量用多了不知道表示什么意思的时候,枚举是解决这种问题就最为有用

enum Color
	{
		COLOR_BLACK,
		COLOR_RED,
		COLOR_BLUE,
		COLOR_GREEN = 9,
		COLOR_WHITE,
		COLOR_CYAN,
		COLOR_YELLOW,
		COLOR_MAGENTA,
	};

	Color c1(COLOR_BLACK);
	Color c2 = COLOR_BLACK;
	Color c3 = COLOR_YELLOW;
	cout << c1 << endl;
	cout << c2 << endl;
	cout << c3 << endl;

特别方便的用法:利用枚举作为switch的标签
:这样将避免了switch没法使用字符串做标签的弊端

指针与自由存储空间

指针定义的基本

int *pl;
int xl = 20;
pl = &xl; // 将xl的地址赋值给pl指针,要知道&符号是取地址
*pl = xl;  //*pl才表示pl地址上存储的内容

即:
*pl 是值,pl是地址
xl 是值,&xl 是地址

使用 new 运算符来分配内存

:规范的指针定义语句

int *pl = new int;//规范的指针定义语句
int *pl3 = new int[10];//定义数组

意思是 new int 告诉程序,需要适合存储 int 的内存。new运算符则是根据类型来确定需要多少字节的内存,然后找到这样的内存,并返回地址,再把地址赋给pl,即pl是地址,*pl是存贮在那个地址里的值;

使用 delete 运算符释放内存
delete只能用于释放 new 运算符创建的变量,可以用于节省空间
例:

int *pl = new int;//规范的指针定义语句
delete pl;
int *pl3 = new int[10];//定义数组
delete[] pl3;

这样做不会删除 pl 指针,只是为释放掉 pl 指针所指的地址

动态指针

int *p3 = new int[3];
p3[0] = 1;
p3[1] = 2;
p3[2] = 3;
cout << p3[1]<<endl;
p3 = p3 + 1;//把起始指针位置+1
cout << p3[1] <<endl;

模板类型 vector 和 array,即容器类

vector 类型使用上
包含:#include<vector>,且它也包含在命名空间 std
说明:
vector 类型 与 string 类型相似,都是自动管理内存,也能同string一样根据数据大小自动设置长度,也可在末尾添加新的数据。

vector<int> num(5);//表示定义5个int模板类型的变量,这里的长度参数可以是值也可以是变量
vector<int> num_1;//设置长度为0,因为是自动调节长度的所以无所谓

:vector的长度是在添加和插入新数据时自动调节的,但是操作需要vector的相关操作。

vector的函数说明
.push_back(参数)末尾插入数字,参数类型为int
.insert(vector变量.begin()+i,参数2)插入元素,参数1(vec.begin()+i)表示在第i个元素后面插入参数2
.erase(vector变量.begin()+2)删除第3个元素
.erase(vector变量.begin()+i,vector变量.end()+j)删除区间[i,j-1];区间从0开始
size()求取vector大小
clear()清除vector的内容,清除后size为0

访问元素的方法与数组一样。
访问方法2 :迭代器访问(迭代器是指针):

vector<int> vec;
for (int i = 0; i < 10; i++)
{
	vec.push_back(i);//末尾插入数据
}
vector<int>::iterator it;//定义一个int类型的迭代器,迭代器是指针
for(it = vec.begin(); it!=vec.end(); it++)
   {
    cout<<"迭代遍历:"<<*it<<endl;
   }
  //结果为:0,1,2,3,4,5,6,7,8,9

array 类型使用上
包含:#include<array> ,且它也包含在命名空间std
说明:
array 类型的使用基本和数组类似,长度固定,比数组更加方便和安全
用法:

array<int, 3> ai;//3那里只能是值,不能是变量

在给 array 和 vector 进行赋值或者访问时,可以使用成员函数at(),即:

ai.at(1)=10;
vec.at(2) = 11;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LionelMartin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值