自学内容网 自学内容网

每日计划-1117

1. 完成 169. 多数元素

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        // 使用哈希表来统计每个元素出现的次数
        unordered_map<int, int> countMap;
        int n = nums.size();

        for (int num : nums) {
            // 如果元素已经在哈希表中,增加其计数
            if (countMap.count(num)) {
                countMap[num]++;
            } else {
                // 如果元素不在哈希表中,添加该元素并设置计数为1
                countMap[num] = 1;
            }

            // 如果当前元素的计数超过数组大小的一半,返回该元素
            if (countMap[num] > n / 2) {
                return num;
            }
        }

        // 按照题目假设,这里应该不会执行到,因为一定存在多数元素
        return -1; 
    }
};

 

2. 八股部分

1) 什么是 C++ 内联函数?它的作用是什么?

  • 定义:C++ 内联函数(inline function)是一种在编译阶段将函数体插入到调用点的函数。简单来说,编译器会将内联函数的代码在每个调用该函数的地方展开,而不是像普通函数那样进行常规的函数调用(包括保存现场、跳转到函数地址、返回等操作)。
  • 作用
    • 提高性能:对于一些简单的、频繁调用的函数,使用内联函数可以减少函数调用的开销。因为函数调用涉及到一些额外的操作,如栈帧的创建和销毁、参数的传递和返回值的处理等。将函数内联后,这些开销就可以避免,从而提高程序的执行效率。例如,一个简单的获取两个整数最大值的函数,如果频繁调用,将其设为内联函数可以提升性能。
    • 代码可读性:内联函数可以让代码结构更清晰。它在逻辑上是一个函数,但在性能上又接近直接将代码写在调用处。这使得代码在保持函数的模块化和可读性的同时,还能获得较好的性能。

2) 内联函数与普通函数有什么区别?如何定义和使用内联函数?

  • 与普通函数的区别
    • 调用方式
      • 普通函数:当调用普通函数时,程序会跳转到函数所在的内存地址执行函数体,执行完后再返回调用点。这个过程涉及到栈帧的创建和销毁等操作。
      • 内联函数:编译器在编译阶段会将内联函数的代码直接替换到函数的调用点,就好像把函数体的内容直接写在调用的地方一样,不存在函数调用的开销。
    • 代码体积与执行速度权衡
      • 普通函数:代码体积相对较小,因为函数体只存在一份。每次调用函数只是执行跳转和返回等操作。但是,对于频繁调用的小函数,函数调用的开销可能会影响性能。
      • 内联函数:通过减少函数调用开销来提高执行速度,但可能会导致代码体积增大。因为如果一个内联函数在多个地方被调用,那么函数体的代码会在每个调用点都插入一份。
    • 适用场景
      • 普通函数:适用于功能复杂、代码量较大或者调用频率不高的函数。比如复杂的数学计算函数或者文件操作函数等。
      • 内联函数:适合那些代码简单、执行速度要求高且频繁调用的函数,如简单的访问器函数(getter 和 setter)或者简单的计算函数。
  • 定义和使用内联函数
    • 定义方式
      • 可以在函数声明前加上inline关键字,例如:inline int add(int a, int b) { return a + b; }
      • 也可以在函数定义时加上inline关键字,函数声明时可以不加。如在头文件中定义函数体时:
// 在头文件中
inline int multiply(int x, int y) {
    return x * y;
}
  • 使用方式:和普通函数一样调用,例如:
int main() {
    int num1 = 3, num2 = 5;
    int sum = add(num1, num2);
    int product = multiply(num1, num2);
    // 其他代码
    return 0;
}

 


原文地址:https://blog.csdn.net/asd_hero/article/details/143840796

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!