C++数组array、STLvector容器、内存分配new、复制内存memcpy()、设置内存memset()、智能指针的一些常用用法
【代码】C++数组array、STLvector容器、内存分配new、复制内存memcpy()、设置内存memset()、智能指针的一些常用用法。
·
1、std::array的几个常见用法 (数组)
std::array<int, 2> studentId{ 1001,1002 }; 2个学生学号
std::array<int, 2> teacherId{ 1001,1002 }; 2个教师编号
std::cout << (studentId == teacherId) << std::endl; 判断两数组是否相等
std::cout << studentId.at(1) << std::endl; 输出数组第1个数
std::cout << studentId.size() << std::endl; 输出数组中元素个数
studentId.fill(999); 数组元素全填999
for (int x : studentId) { 打印数组中所有元素
std::cout << x << std::endl;
}
2、vector的常见用法
std::vector<int> studentId{ 1,2,3,4 }; 初始化数组
std::cout << studentId.size() << std::endl; 数组中几个元素,输出为4
std::vector<int> studentId; 里面没有元素
std::cout << studentId.size() << std::endl; 数组中几个元素,输出为0
std::vector<int> studentId(5,100); vector里有5个元素,元素值为100
std::cout << studentId.size() << std::endl; 数组中几个元素,输出为5
for (int x : studentId) { 输出 100 100 100 100 100
std::cout << x << std::endl;
}
studengtId.clear(); 清空数组
std::cout << studentId.size() << std::endl; 数组中几个元素,输出为0
std::vector<int> studentId; 创建一个数组长度为0
std::cout << studentId.size() << std::endl; 0
do
{
int id;
std::cin >> id;
if (!id) break; 输入0则退出
studentId.push_back(id); 动态添加数组成员(and 长度)
} while (1);
std::cout << studentId.size() << std::endl; 输入的个数
studengtId.assign(10,100); 将studentId重新初始化为拥有10个元素,每个元素为100的vector
3、C++中的动态内存分配 new
数据类型* 指针变量名称 = new 数据类型;
int* pa = new int;
数据类型* 指针变量名称 = new 数据类型[数量];
int* pa = new int[5]; 分配一段能够存放5个int变量类型的内存空间
注* 分配失败pa返回0
释放
delete p;
delete[] p;
4、 memcpy()内存赋值函数
void* memcpy(void* _Dst,const void* _Src,size_t Size);
memcpy可以将_Src区域的内存复制到_Dst区域,复制长度为_Size
例:
int studentId[5]{ 100,101,102,103,104 };
int* p = new int[5];
memcpy(p, &studentId, 5 * sizeof(int));
for (int i = 0; i < 5; i++) {
std::cout << p[i] << std::endl;
}
5、memset()设置内存
void* memset(void* _Dst,int val,size_t _Size);
memset可以将_Src内存区域的每一个字节的值都设置为val,_Size为要设置的长度(字节)
例:
int* p = new int[100];
memset(p,0,100*sizeof(int));
更多推荐




所有评论(0)