C++ 数组 技术教程文章

二维数组作为函数参数的用法(c++)【代码】

背景 今天刷题的时候遇到了需要一个大小可变的二维数组作为函数参数进行传递的情况,有点模糊不清,所以查了一些资料,写了这篇博客。 大小固定的二维数组 正确写法如下: void Func(int array[3][10]);//写出数组的固定大小 void Func(int array[][10]);//可以省略第一维,但是不能省略第二维错误写法: void Func(int array[][]);//此为错误写法 void Func(int array[3][]);此为错误写法错误原因:从实参传递来的是数组的起始地址...

C++ 类模板案例 (实现一个通用的数组类)【代码】

案例描述:实现一个通用的数组类,要求如下: 可以对内置数据类型以及自定义数据类型的数据进行存储将数组中的数据存储到堆区构造函数中可以传入数组容量提供对应的拷贝构造函数以及operator=防止浅拷贝问题提供尾插法和尾删法堆数组中数据进行添加和删除可以通过下标方式访问数组中元素可以获取数组中当前元素个数和数组的容量 .hpp文件 #include <iostream> #include <string> using namespace std;template<class T> class MyAr...

修改数组(洛谷P7285题题解,C++语言描述)【代码】【图】

题目要求 P7285题目链接分析 这题虽然是红题,但是因为很有趣且是 Special Judge ,所以写篇题解。 乍一看,这题好麻烦啊,要综合考虑xxx和yyy,达到x?yx-yx?y的最优化。 实际上,洛谷的 Special Judge 一般都有一些“奇怪”的思路。 第一行输入就是告诉你一共有几组问题,而每组内第一行是一共几个0/1的数字,第二行是串。 我在纸上画了画图,开始想的是,会不会是间距最小的连起来是最优的,然后再考虑考虑连起来别的。 画着画着...

c++之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化【代码】【图】

C++二维容器vector<vector>初始化方法解析 遇到的问题: 在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table,但是不知道怎么对其进行初始化(初始化时指定二维容器的大小),于是网上搜索一番,最终找到了如下一行代码: vector<vector<int>> table(size1, vector<int>(size2, 0));代码说明:声明一个名为table的容器,其元素为vector的容器。简单来说类似一个int型的二维数组。 这样,就得到了一个如下图所示的...

LeetCode 33. 搜索旋转排序数组(C++) 二分查找【代码】【图】

升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。 请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 示例 1: 输入:nums = [4,5,6,7,0,1,2], target = 0 输出:4示例 2: 输入:nums = [4,5,6,7,0,1,2], target = 3 输出:-1示例 3: 输入:nums = [1], target = 0 输出:-1文字题解 二分查找 思路和算法 对于有序数...

c++17(27)-函数指针,函数数组指针【代码】

c1 func2 func3 22 28 Hit any key to continue...#include <iostream> #include <string.h> using namespace std;void func1(){cout<<"func1"<<endl; } void func2(){cout<<"func2"<<endl; } void func3(){cout<<"func3"<<endl; } int func4(int x){cout<<x<<endl;return x+6; }int main(int argc, char **argv) {void (*f1)(){func1};(*f1)();//?????°???é’?void (*f[])(){func2,func3};//?????°??°??????é’?(*f[0])();(*f[1])...

C++自定义类型数组【代码】

利用函数模板完成对自定义类型的数组的一些简陋操作 #include<iostream> #include<string> using namespace std; template<class T>//类模块 class Array { public:Array(int n)//构造函数{m_capacity = n;this->m_size = 0;p = new T[n];}Array(const Array& a)//拷贝构造函数:防止浅拷贝{this->m_capacity = a.m_capacity;this->m_size =a.m_size;this->p = new T[a.m_capacity];for (int i = 0; i < a.m_size; ++i)this->p[i] =...

【C++语法】函数和数组【代码】

函数和一维数组 # include <iostream>using namespace std; const int ArSize = 8;int sum_arr(int arr[], int n);//正确的函数原型int main() {int cookies[ArSize] = {1, 2, 4, 8, 16, 32, 64, 128};int sum = sum_arr(cookies, ArSize);cout << "Total cookies eaten: " << sum << endl;return 0; }int sum_arr(int arr[], int n) {int total = 0;for(int i = 0; i < n; i++) total += arr[i];return total; } 在C++中,当且仅当...

C++ 字符、字符串、字符数组、字符串指针、指针数组【代码】

一、字符指针、字符数组 字符指针 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以 \0 作为串的结束。 char *ps="C Language"; 顺序是:1.分配内存给字符指针;2.分配内存给字符串;3.将字符串首地址赋值给字符指针; char *ps; // ps 字符串指针,是指针,是一个变量 ps="C Language"; // ps 为字符串的首地址,利用 ps++ 可遍历字符串,字符串存储在以 p...

【LeetCode】C++ :简单题 - 字符串 1662. 检查两个字符串数组是否相等【代码】

1662. 检查两个字符串数组是否相等 难度简单6 给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。 示例 1: 输入:word1 = ["ab", "c"], word2 = ["a", "bc"] 输出:true 解释: word1 表示的字符串为 "ab" + "c" -> "abc" word2 表示的字符串为 "a" + "bc" -> "abc" 两个字符串相同,返回 true 示例 2: 输...

[C++] 数组的地址【代码】

从结果来看,栈上的二维数组全是连续的,即arr[0][9] 到 arr[1][0] 也是连续的,这点应该没有什么争议。 对于动态分配的数组来说,先将二维指针分配10个一维指针,此时创建了10个指针对象,这十个指针对象各自有自己的地址,我们用&读取出来,指针对象的值也是一个地址,我们直接可以用test[i]访问,指针对象的值的地址中的值,我们可以用*号访问。 ptr of test[9]:0x2593bf8 value of test[9] itself:0x7d6270 value of test[9]:0...

C++ 指针详讲、及指针与数组【代码】【图】

在介绍指针概念之前,需要了解在计算机程序存储数据时必须跟踪的三基本属性:信息存储在何处,也就是地址; 存储的值为多少,简称值; 存储的信息是什么类型,简称类型;1,地址运算符& 在常规变量定义时,寻找变量的 值 和 类型 很方便,如果想知道存储变量的 地址(也就是内存区),这时就需要用到地址运算符 & int main() {int a = 3;int b = 4;cout << "变量 a 的地址为 " << (&a) << endl;cout << "变量 b 的地址为 " << (&b) <...

c++数组中最大值和最小值相加

源程序 #include <iostream>using namespace std;void main(){ int a[6]={23,15,64,33,40,58}; int s1,s2; s1=s2=a[0]; for(int *p=a+1;p<a+6;p++) { if(s1 > *p) s1=*p; if(s2 < *p) s2=*p; } cout<<s1+s2<<endl;} 运行结果:79

C++之一维&二维数组【代码】【图】

一维&二维数组 数组中的每个数据元素都是相同的数据类型,数组是由连续的内存位置组成的 常见的数组定义: 第一种: 数据类型 数组名[数组长度]; //这里我们是要自己进行定义赋值的#include <iostream> #include<string>using namespace std;int main() {int arr[5];arr[0] = 1;arr[1] = 2;for (int i = 0; i < 5;i++) {cout << arr[i] << endl;}system("pause");return 0;}第二种: 在定义里就给赋值,如果给填充的数字小于数组的...

C++——vector、array和数组的区别

1.vector、array是模板类,封装了数组; 2.vector、array封装了各种功能函数,重载了[]运算符,size、判空、swap机制,更安全;数组访问容易出错。 3.vector属于变长容器,array和数组定长; 4.array提供了初始化所有成员的方法fill; 5.vector动态插入和删除元素的机制,其他两个没有,要自己实现。

《C++ Primer》笔记 第三章 字符串、向量和数组【代码】

位于头文件的代码一般来说不应该使用using声明。如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去。与之相反,如果不使用等号,则执行的是直接初始化。string对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止。string类的size函数返回的是一个string::size_type类型的值,它是一个无符号类型的值而且能足...

在C++中进行浮点数与字节数组之间转换(跨平台)【代码】【图】

整型与字节数组的转换比较简单,但是浮点数与字节数组的转换比较麻烦。网上流传得比较多的方案是利用联合体或者强制转换来搞,从内存中直接获取字节数组: union {char bytes[8];double d; };这种搞法虽然简单,但是这不是一个跨平台的方案。编码有大端序(Big Endian)和小端序(Small Endian),不同平台的情况可能不一样。同时,不同的编译器也有可能导致字节数组不同。总之,这种方案不怎么可靠。 比较靠谱的办法是研究一下IEE...

C++容器之动态数组vector①【代码】

5、小作业:使用之前课程中讲解的 CStudent 类型来定义多个 vector 动态数组,并进行初始化操作!#include <iostream> #include <vector> using namespace std; class Student {char* p_name;int age;int num; public:Student(const char* t_name,int t_age,int t_num):age(t_age),num(t_num){p_name = NULL;int str_len = strlen(t_name)+1;p_name = new char[str_len];memset(p_name, 0, str_len);memcpy(p_name, t_name, str_le...

第八届蓝桥杯C/C++省赛题:2,3,5,7,11,13,....是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。 上边的数列公差为30……【代码】

题目: 标题:等差素数列 2,3,5,7,11,13,…是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。 上边的数列公差为30,长度为6。 2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果! 有这一理论为基础,请你借助手中的计算机,满怀信心地搜索: 长度为10的等差素数列,其公差最小值是多少? 注意:需要提交的是一个整数,不要填写任何多余的内容和...

C++笔记之指针与数组【代码】

1.指针与数组的基本概念 1.1数组概念 数组(Array)是有序的元素序列。元素的类型相同,元素的个数确定。(如果元素个数不确定建议使用vector),数组元素不仅在逻辑上是一个接一个连续的,在实际存储中也是,数组中的元素存储在一个连续性的内存块中,并通过索引(下标)来访问。 1.2指针概念 指针是一种指向某种类型的复合类型,用于记录地址。指针也是对象,可以赋值和拷贝。指针占内存空间为8字节,这与操作系统的位数有关(见...