C++——数组、多维数组、简单排序、模板类vector

这篇具有很好参考价值的文章主要介绍了C++——数组、多维数组、简单排序、模板类vector。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人简介

👀个人主页: 前端杂货铺
🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒Three.js🍖数据结构与算法体系教程

🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

C++基础篇

内容 参考链接
C++入门(一) C++——简介、Hello World、变量常量、数据类型

前言

大家好,这里是前端杂货铺。

上一篇文章,我们初步认识了 C++,并学习了常量变量和数据类型等知识。

接下来,继续我们 C++ 的学习!


一、数组

数组就是一组相同类型的数据对象集合。

下面,我们进行对一维数组的 初始化,访问和遍历操作

#include<iostream>
using namespace std;

int main()
{
	// 长度为 10 的 int 类型的数组
	int a1[10];

	const int n = 4;
	// 长度为 4 的 double 类型的数组
	double a2[n];

	int i = 4;
	// double a3[i]; // 错误写法,元素个数不能为变量

	// 初始化
	int a3[4] = { 1, 2, 3, 4 };
	float a4[] = { 5, 6, 7 };
	short a5[10] = { 3, 6, 9 };
	// short a6[2] = { 3, 6, 9 }; // 报错,初始值太多

	// int a6[4] = a3; // 错误,不能用另一个数组对数组进行复制

	// 访问数组
	int a[] = { 1,2,3,4,5,6,7 };
	cout << "a[2] = " << a[2] << endl;
	a[2] = 30;
	cout << "修改后 a[2] = " << a[2] << endl;

	// 获取数组长度
	cout << "a数组所占空间大小为:" << sizeof(a) << endl;
	cout << "a数组中每个元素所占空间大小为:" << sizeof(int) << endl;
	
	int aSize = sizeof(a) / sizeof(int);
	cout << "数组a的长度为:" << aSize << endl;

	// 遍历
	for (int i = 0; i < aSize; i++) {
		cout << "a[" << i << "] = " << a[i] << endl;
	}

	// 范围 for 循环
	for (int num : a) {
		cout << num << endl;
	}

	cin.get();
}

C++——数组、多维数组、简单排序、模板类vector,C++,c++,开发语言


二、多维数组

多维数组就是数组的数组。其访问等操作和一维数组几乎一致。详见下面的代码:

#include<iostream>
using namespace std;

int main()
{
	// 初始化 二维数组 三行四列
	int ia[3][4] = {
		{1,2,3,4},
		{5,6,7,8},
		{9,10,11,12},
	};
	// 等价于ia,但可读性不高
	int ia2[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
	
	// 只对第一个元素赋值,其余赋零值
	int ia3[3][4] = { 12 };

	// 第一个维度可省略(编译器可自动推断),第二个维度不可省略 
	int ia4[][4] = {
		{ 1,2,3,4 },
		{ 5,6,7,8 },
		{ 9,10,11,12 },
	};

	// 访问
	cout << "ia[1][2] = " << ia[1][2] << endl;

	// 遍历
	// 计算二维数组中的行数和列数
	cout << "ia总大小为:" << sizeof(ia) << endl;
	cout << "ia每一行的大小为:" << sizeof(ia[0]) << endl;
	cout << "ia每一个元素的大小为:" << sizeof(ia[0][0]) << endl;

	// 行数
	int rowCount = sizeof(ia) / sizeof(ia[0]);
	// 列数
	int colCount = sizeof(ia[0]) / sizeof(ia[0][0]);

	for (int i = 0; i < rowCount; i++){
		for (int j = 0; j < colCount; j++) {
			cout << ia[i][j] << "\t";
		}
		cout << endl;
	}

	// & 表示引用,后续会学习
	for (auto& row : ia) {
		for (auto num : row) {
			cout << num << "\t";
		}
		cout << endl;
	}

	cin.get();
}

C++——数组、多维数组、简单排序、模板类vector,C++,c++,开发语言


三、简单排个序

我们使用双重 for 循环,对数组进行排序,下面的代码中我们使用了 选择排序法冒泡排序法 实现了对数组中无顺序的数进行排序。

#include<iostream>

using namespace std;

int main()
{
	int arr[] = { 5,7,8,1,2,4,6,9,8 };
	int size = sizeof(arr) / sizeof(arr[0]);

	// 选择排序
	for (int i = 0; i < size; i++) {
		for (int j = i + 1; j < size; j++) {
			if (arr[j] < arr[i]) {
				int temp = arr[j];
				arr[j] = arr[i];
				arr[i] = temp;
			}
		}
	}

	// 冒泡排序
	for (int i = 0; i < size; i++) {
		for (int j = 0; j < size - i - 1; j++) {
			if (arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}

	for (int num : arr) {
		cout << num << " ";
	}

	cout << endl;

	cin.get();
}

C++——数组、多维数组、简单排序、模板类vector,C++,c++,开发语言


四、模板类 vector

vector 是对数组功能进行扩展的一个标准库类型。它容纳着一堆数据对象,其实就是一组类型相同的数据对象的集合。

vector 与 数组的区别:

  1. 数组是更加底层的数据结构;长度固定,功能较少,安全性没有保证;但性能更好,运行更高效;
  2. vector 是模板类,是数组的上层抽象;长度不定,功能强大;但运行效率较低;

C++ 11 还新增了 array 模板类,它跟数组更加类似,长度是固定的,但更加方便、更加安全。所以在实际应用中,对于固定长度的数组使用 array,不固定长度的数组使用 vector。

下面的代码,我们进行了 模板类的初始化、访问元素、修改元素、遍历元素、添加元素 等操作,其实现也比较简单,详见如下代码:

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	// 默认初始化
	vector<int> v1;

	// 列表初始化(拷贝初始化)
	vector<char> v2 = { 'a', 'b' };

	// 可以不加等号
	vector<char> v3 { 'a', 'b' };

	// 直接初始化
	vector<short> v4(5);
	// 直接初始化并附默认值 100
	vector<long> v5(5, 100);

	// 访问元素
	cout << "访问v5[3]元素:" << v5[3] << endl;

	// 修改元素
	v5[3] = 25;
	cout << "修改v5[3]的值为25:" << v5[3] << endl;
	// cout << v5[6] << endl; // 错误,越界访问

	// 遍历所有元素
	for (int i = 0; i < v5.size(); i++) {
		cout << v5[i] << " ";
	}

	cout << endl;

	// 添加元素
	v5.push_back(50);

	// 添加元素后遍历
	for (int num : v5) {
		cout << num << " ";
	}

	cout << endl;

	// 向空容器中添加倒序的元素
	for (int i = 10; i > 0; i--) {
		v1.push_back(i);
	}

	for (int num : v1) {
		cout << num << " ";
	}

	cin.get();
}

C++——数组、多维数组、简单排序、模板类vector,C++,c++,开发语言


总结

本篇文章我们首先认识到了 C++ 的数组和多维数组,并熟悉了如何对其 初始化、访问、遍历

之后,我们通过 简单排序法,使用了双重 for 循环完成了对数组的排序。

最后,我们认识了 模板类 vector,了解了它与数组的区别,并熟悉了 初始化、访问、遍历、添加元素、获取长度 等操作。

好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!


参考资料:

  1. 百度百科 · C++
  2. 2023最新版C++【作者:尚硅谷】

C++——数组、多维数组、简单排序、模板类vector,C++,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-813984.html


到了这里,关于C++——数组、多维数组、简单排序、模板类vector的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 获取数组大小、多维数组操作详解

    要获取数组的大小,可以使用 sizeof() 运算符: 示例 结果: 为什么结果显示为 20 而不是 5,当数组包含 5 个元素时? 这是因为 sizeof() 运算符返回类型的大小(以字节为单位)。 要找出数组有多少个元素,必须将数组的大小除以它包含的数据类型的大小: 示例 结果: 然而,

    2024年04月10日
    浏览(43)
  • C++中使用嵌套循环遍历多维数组

    一维数组:数组元素可以看做是一行数据。 二维数组:更像是一个表格,既有行数据又有列数据。 C++没有提供二维数组类型,但用户可以创建每个元素本身都是数组的数组。例如,假设要存储 5 个城市在 4 年间的最高气温,可以这样声明数组: 该声明意味着 maxtemps 是一个包

    2024年02月07日
    浏览(40)
  • C++ 命名空间 & vector & 模板

             为了区分不同库中相同名称的函数、类、变量等,引入概念:命名空间。它可作为附加信息来帮助区分它们。使用了命名空间即定义了上下文,本质上就是定义了一个范围。                   命名空间的定义使用  namespace ,后跟命名空间的名称,如下所

    2024年02月09日
    浏览(39)
  • C++ vector计算数组之和

        在C++ vector是一个动态数组,支持按下标索引访问、顺序访问、动态扩容等。计算vector里的元素之和,既可以通过for循环遍历每一个元素,然后相加得到数组之和;也可以通过调用accumulate()库函数,输入vector的起点、终点、参考原点(默认是0或者0.000),来得到数组之和;

    2024年01月22日
    浏览(36)
  • c++ 11标准模板(STL) std::vector (二)

    template     class T,     class Allocator = std::allocatorT class vector; (1) namespace pmr {     template class T     using vector = std::vectorT, std::pmr::polymorphic_allocatorT; } (2) (C++17 起) 1) std::vector 是封装动态数组的顺序容器。 2) std::pmr::vector 是使用多态分配器的模板别名。 元素相继存储,这意味着不

    2024年02月02日
    浏览(56)
  • 动态数组和C++ std::vector详解

    std::vector 是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。 std::vector 是封装动态数组的顺序容器,且该容器中元素的存取是连续的。 vector的存储是自动管理,不需要人为操作自动实现按需扩张收缩。但实现自动管理的代价就是

    2024年02月13日
    浏览(69)
  • C++学习笔记之四(标准库、标准模板库、vector类)

    C + + C++ C + + 标准库指的是标准程序库( S t a n d a r d Standard St an d a r d L i b a r a y Libaray L iba r a y ),它定义了十个大类,其中包括我们比较熟悉的 i o s t r e a m , s t r i n g iostream, string i os t re am , s t r in g 都是这十个大类的其中一个类中的一个小类。而 c + + c++ c + + 的标准模板库也

    2024年02月07日
    浏览(39)
  • C++ vector逆序排序的三种方法

    突然忘了快速逆序的方法,在网上搜索vector逆序发现没有,于是自己写一下,帮助大家快速查找。 假如你有一个vector里面有元素1,2,3,4,5,则逆序方法如下。 方法一: 方法一比方法二方便。 方法二: 方法三: 方法四(推荐): 你也可以通过使用rbegin,rend指针逆序排序

    2024年02月17日
    浏览(47)
  • 【C++】学习C++STL中的数组——vector

            好久不见大家!今天的这篇博客是关于我对于STL(C++标准模板库)中的容器vector的学习和理解,希望大家能够喜欢。          vector是STL中的一种序列容器,对应着数据结构中的顺序表,也可以说是数组。在我们正式学习了解vector之前,我们先看看C++官网对其的文档介

    2024年02月10日
    浏览(39)
  • C++中vector和数组之间的转换及其效率问题

    因为一些原因,本人遇到需要频繁把vector与数组之间转换的情况,于是就分析了一下两个之间转换的实施以及相关的效率问题。 众所周知,一维vector中的元素存储是顺序连续的,所以我们可以通过访问第一个元素的地址以及元素的数量来访问一系列的元素。因此,我们可以采

    2023年04月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包