首页 > 其他分享 >错误总结反思

错误总结反思

时间:2024-09-16 15:36:46浏览次数:11  
标签:总结 错误 nums int heapVec vector 反思 size

0.概述

这篇文章旨在记录我真实经历过的一些值得反思的错误,可能是自己犯的错误,也可能是其他人犯的错误。但是都是一些值得反思的问题,文章结构可能会比较乱,以后记录的问题多了肯定会再进行梳理。

1.vector size为0

在做"求TopK"算法问题时,遇到结果错误问题。经过调试发现那个长度为K的大顶堆vector参数的size一直为0导致问题的出现。提取错误代码如下:

int findKthSmallest(vector<int>& nums, int k) 
{
    vector<int>heapVec;
    int res=0;
    if(k<=0 || nums.size()<=0)
        return -1;
     heapVec.reserve(k+1);
    for(int i=0;i<k;++i)
    {
        heapVec[i+1]=nums[i]; //低级错误
    }
    cout<<"heapVec size="<<heapVec.size()<<endl;//heapVec size=0;
    //后续操作......
    return res;
}
int main()
{
    vector<int>testVec={1,2,3,4};
    findKthSmallest(testVec,2);
}

异常情况是heapVec.size()返回0.
原因分析:

heapVec.reserve(k+1);//只改变了heapVec的容量,capacity()返回k+1.但是不改变heapVec的size,size还是0。
heapVec[i+1]=nums[i];//其实经过reserve后,已经申请了内存。但是heapVec的size为0,执行后还是为0.

解决方法:
改用push_back

heapVec.push_back(nums[i]);

深入分析:
如果对一个空vector的元素赋值,运行直接段错误

vector<int>testVec;
testVec[0]=1;//segmentation fault (core dumped)

源码分析(待补充):

标签:总结,错误,nums,int,heapVec,vector,反思,size
From: https://www.cnblogs.com/madadam/p/18416313

相关文章

  • 《欢迎来到帕拉迪泽》qt5cored.dll丢失错误:一站式解决方案分享
    在《欢迎来到帕拉迪泽》这款游戏中,出现“qt5cored.dll丢失”的问题,可能由以下几个原因造成:一、原因分析安装问题:在游戏安装过程中,qt5cored.dll文件可能因安装程序未能完整执行而未被正确安装到系统目录中。安装包可能已损坏或不完整,导致某些文件未能成功安装。文件被删......
  • 《黑神话:悟空》弹出错误提示窗口:找不到AkHarmonizer.dll文件如何解决?
    当您遇到《黑神话:悟空》或任何其他游戏提示“找不到AkHarmonizer.dll文件”的错误时,这通常意味着游戏运行时需要这个特定的动态链接库(DLL)文件,但在您的系统上没有找到它。这个文件可能属于某种音频处理库,比如AKAudioEngine,它是许多现代游戏用来处理音频的组件。以下是一些解......
  • 《黑神话:悟空》游戏突发崩溃:AkFlanger.dll 文件错误如何处理?
    AkFlanger.dll文件错误的原因可以归结为多个方面,这些原因可能单独或共同作用导致文件丢失、损坏或无法被系统正确加载。以下是对AkFlanger.dll文件错误原因的分析:文件被误删除或移动:用户可能在清理系统垃圾文件、卸载软件或进行磁盘整理时不小心删除了AkFlanger.dll文件......
  • 动态规划理论总结
    三个特征最优子结构问题最优解包含子问题的最优解,即可以通过子问题得到最优解。无后效性有两层含义:在后面的推到过程中,只关心前面的状态值,不关心这个状态是怎么一步步推导出来的。前面的状态如果已经确定,就不会收到后面状态影响子问题重叠不同的决策序列,到达某个......
  • mysql 常用知识点总结
    MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)。了解MySQL的语法对数据库管理和操作非常重要。以下是MySQL语法的详细完整解释,涵盖基本概念、创建表、查询、修改数据等内容。1.基础概念数据库(Database):数据库是存储数据的容器,里面可以包含......
  • 2024.9.16 上午 总结(考 DS)
    T1我的做法:合并->并查集。类似建Kruskal重构树。询问跑LCA。注意并查集合并要把两个根都变成一个新点的儿子,而不是把一个作为另一个的儿子。(可能类似建[边](?)Kruskal重构树)要特判询问时\(x=y\)的情况(好像是输出\(0\))。lzh的做法:连出一棵树,边的边权是......
  • Python中的`raise`语句:如何优雅地控制错误
    引言在软件开发过程中,错误处理是不可避免的话题。良好的错误处理不仅能提高程序的稳定性,还能显著提升用户体验。Python通过异常机制提供了一种优雅的方式来管理这些意外情况。其中,raise语句作为触发异常的关键角色,其重要性不言而喻。本文将从基础语法入手,逐步深入探讨raise语句的......
  • 9.15 比赛总结
    突然想起来自己把比赛总结的好习惯忘掉了,所以现在重新拾起,故名曰《朝花夕拾》。T1出了个大阴间题看数据范围明显状压。很明显,\(a,b\)分成两部分处理。\(f_{s,i}\)表示状态为\(s\),\(a=i\)时的所有情况之和,还要计算\(num_{s,i}\)表示此时情况数。\(b\)直接递推模拟即可......
  • 计算机的错误计算(九十三)
    摘要  探讨log(y,x)即以x为底y的对数的计算精度问题。    Log(y,x)运算是指 x为底y的对数。 例1.  计算log(123667.888,0.999999999999999).    不妨在Python中计算,则有:若在Excel单元格中计算,则有几乎同样的输出:    然而,正......
  • STL-vector容器总结
    vector(向量)是C++标准模板库(STL)中最常用的容器之一,它提供了动态数组的功能,可以存储任意类型的元素。vector具有自动管理内存、支持随机访问、动态调整大小等优点,非常适合用于需要频繁增删元素或未知大小的数组场景。下面是对vector的总结和常见用法。先复习一下c++中常用的......