C++基础容器
序列型容器--数组
◆ 概念
- 代表内存里一组连续的同类型存储区
- 可以用来把多个存储区合并成一个整体
比如:
int arr[10] = {1,2,3,4,5,6,7,8};
◆ 数组声明
- int arr[10]
- 类型名称int表示数组里所有的元素的类型
- 名称arr是数组的名称
- 整数10表示数组里包含的元素个数
- 数组元素个数不可变
新型数组--vector
◆ Vector 是面向对象方式的动态数组
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
vector 可以完成动态扩容的过程
#include<vector>
using namespace std;
int main()
{
vector<int> vec = { 1,2,3,4 };
vec.push_back(5); # 在尾部进行元素插入操作
return 0;
}
capacity 当前vector分配的大小
size 当前使用数据的大小
// vector_test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
//顺序访问
vector<int>obj;
for (int i = 0; i<10; i++)
{
obj.push_back(i);
}
cout << "直接利用数组:";
for (int i = 0; i<10; i++)//方法一
{
cout << obj[i] << " ";
}
cout << endl;
cout << "利用迭代器:";
//方法二,使用迭代器将容器中数据输出
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
for (it = obj.begin(); it != obj.end(); it++)
{
cout << *it << " ";
}
return 0;
}
字符串变量与常量
◆ 字符串变量
- 字符串是以空字符('\0')结束的字符数组
- 空字符 '\0' 自动添加到字符串的内部表示中国
- 在声明字符串变量时, 应该为这个空结束符预留一个额外元素的空间如:char strHelloWorld ={“Helloworld”};
◆ 字符串的指针表示方法
◆ 字符串的常见操作
- 字符串长度 strlen(s)
- 字符串比较: strcmp(str1,str2)
- 字符串拷贝:strcpy(s1,s2) 复制字符串s2到s1
- 复制指定长度字符串: strncpy(s1,s2,n)
- 字符串拼接: strcat(str1,str2) 将字符串str2接到str1后边
- 查找字符串: strchr(s1,ch)查找ch第一次出现的位置
- 查找字符串:strstr(s1,s2)在s1里查找s2第一次出现的位置
#include "stdafx.h"
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
// 定义一个数组
char strHelloWorld[11] = { "helloworld" };
cout << strlen(strHelloWorld) << endl;
return 0;
}
C++指针
c++中内存单元内容和地址
◆ 内存有很多内存单元构成。这些内存单元存放着各种类型的数据。
◆ 计算机对内存的每个内存单元都进行了编号,这个编号就称为内存地址,地址决定了内存单元在内存中的位置。
◆ 记住这些内容单元并不方便,于是c++语言的编译器让我们通过名字来访问这些内存地址。
指针的定义和间接访问操作
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:
type *var-name;
type 是指针的基类型,它必须是一个有效的 C++ 数据类型,var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:
int *ip; /* 一个整型的指针 */
double *dp; /* 一个 double 型的指针 */
float *fp; /* 一个浮点型的指针 */
char *ch; /* 一个字符型的指针 */
所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
C++ 中使用指针
使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 * 来返回位于操作数所指定地址的变量的值。下面的实例涉及到了这些操作:
#include "stdafx.h"
#include <iostream>
using nam