四时宝库

程序员的知识宝库

自学 C++ 第 2 课 数组包含关系(数组的包含方法)

随机输入两个字符数组,如果第二个数组包含于第一个数组中,则输出“第二个数组包含于第一个数组中”字样,且输出第二个数组在第一个数组中的起始索引;如果第二个数组不包含于第一个数组中,则输出“第二个数组不包含于第一个数组”字样。

例如,第一个数组为[a s d f g h j k ],如果第二个数组为[f g h],输出结果为:第二个数组包含于第一个数组中,起始索引为 3;如果第二个数组为[f v h],输出结果为:第二个数组不包含于第一个数组中。

C++ 创建数组和使用数组学习笔记(c加加创建数组)

1. 数组声明三要素:存储在每个元素中的值的类型、数组名、数组中元素个数。中括号内标明数组元素。

C++开发者都应该使用的十个C++11特性(上)

在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。

auto

在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。各种作用域内声明变量都可以用到它。例如,名空间中,程序块中,或是for循环的初始化语句中。

C++中数组为什么不允许直接复制和赋值?

在C++中,数组是一种复杂的数据类型,它们有一些特性和限制,导致数组不支持直接的复制(copy)和赋值(assignment)操作,主要有以下几个原因:

1. 固定大小:C++中的数组是静态数组,其大小在定义时就被固定了,无法在运行时改变大小。这就导致了复制和赋值的问题,因为如果你试图复制或赋值一个数组,你需要知道目标数组的大小,而这通常不是在编译时可知的,因此难以进行自动的复制和赋值操作。

详解C++一维数组,相同数据类型的集合

为什么需要数组?

我们已经学过变量,假定你的班级学生人数为30,现在要存储每个学生的分数,你可能定义如下变量:

老妖:两分钟掌握“C++之数组赋值”的方法

两分钟掌握“C++之数组赋值”的技巧。

我是老妖,之前了解到数组就像放数据的柜子,也就是说数组本质上是一个可以存储大量数据的容器。既然可以存储数据,那么今天就来探讨一维数组的赋值方法。在之前的记录游戏战斗得分的代码中,rotu使用了cin语句来给数组score赋值。

C/C++编程笔记:C数组、字符串常量和指针!三分钟弄懂它

想弄懂C语言中数组和指针的关系吗?这篇文章就占据你三分钟时间,看完你肯定会有收获!


数组

数组声明为 数据类型 名称[ constant-size ],并将一个数据类型的一个或多个实例分组到一个可寻址的位置

C++|实例解析函数指针数组的声明、初始化和使用

函数、指针、数组结合到一起就是函数指针数组。

首先它是一个数组,这个数组的元素是函数指针(指向函数的指针)。

如:

int(*fn[])(int,int);

一般的函数指针是这样定义的:

int(*fn)(int,int);

一般的指针函数是这样定义的:

深度解读C/C++指针与数组(c指针和数组)

指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。今天我们就来聊一聊数组和指针千丝万缕的关系;

一维数组与指针

指针可以用来访问数组,也可以用来改变数组成员,这点与数组本身的下标运算符功能并无区别,请看下面程序演示:

数据结构之堆:c++版基于数组实现(堆的数组实现)

接上篇

#include "../utils/common.hpp"
#include <iterator>
#include <utility>
#include <vector>

class MaxHeap {
private:
    vector<int> maxHeap;
    int left(int i) {
        return 2*i+1;
    }
    int right(int i) {
        return 2*i+2;
    }
    int parent(int i) {
        return (i-1)/2;
    }
    void siftUp(int i) {
        while (true) {
            int p = parent(i);
            if(p<0 || maxHeap[i] <=maxHeap[p]) {
                break;
            }
            swap(maxHeap[i],maxHeap[p]);
            i = p;
        }
    }
        void siftDown(int i) {

        while (true) {
            int l = left(i),r = right(i),ma = i;
            if(l < size() && maxHeap[l] > maxHeap[ma]) {
                ma = l;
            }
            if(r < size() && maxHeap[r] > maxHeap[ma]) {
                ma = r;
            }
            if(ma == i) {
                break;
            }
            swap(maxHeap[i],maxHeap[ma]);
            i = ma;
        }
    }
public:
    MaxHeap(vector<int> nums) {
        maxHeap = nums;
        for (int i = parent(size() -1); i >= 0; i --) {
            siftDown(i);
        }
    }
    int size() {
        return maxHeap.size();
    }
    bool isEmpty() {
        return size() == 0;
    }
    int peek() {
        return maxHeap[0];
    }
    void push(int val) {
        maxHeap.push_back(val);
        siftUp(size()-1);
    }
    void pop() {
        if(isEmpty()) {
            throw out_of_range("堆为空");
        }
        swap(maxHeap[0],maxHeap[size()-1]);
        maxHeap.pop_back();
        siftDown(0);
    }
    void printHeap() {
        cout << "堆的数组表示:";
        printVector(maxHeap);
        cout << "堆的树状表示:" << endl;
        TreeNode *root = vectorToTree(maxHeap);
        printTree(root);
        freeMemoryTree(root);
    }

    
};

int main() {
    vector<int> vec = {9,8,6,6,7,5,2,1,4,3,6,2};
    MaxHeap maxHeap(vec);
    cout << "\n输入列表并建堆后" << endl;
    maxHeap.printHeap();
    int peek = maxHeap.peek();
    cout << "\n堆顶元素为 " << peek << endl;

    /* 元素入堆 */
    int val = 7;
    maxHeap.push(val);
    cout << "\n元素 " << val << " 入堆后" << endl;
    maxHeap.printHeap();

    /* 堆顶元素出堆 */
    peek = maxHeap.peek();
    maxHeap.pop();
    cout << "\n堆顶元素 " << peek << " 出堆后" << endl;
    maxHeap.printHeap();

    /* 获取堆大小 */
    int size = maxHeap.size();
    cout << "\n堆元素数量为 " << size << endl;

    /* 判断堆是否为空 */
    bool isEmpty = maxHeap.isEmpty();
    cout << "\n堆是否为空 " << isEmpty << endl;
    return 0;
}
<< < 1 2 3 4 5 6 7 > >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接