C++
文章平均质量分 60
lilillos
这个作者很懒,什么都没留下…
展开
-
vector扩容机制带来的bug
起因是我写了这样一段代码:将指向vector中元素的指针加入到另一个vector中。 //graph.edges是vector<T> graph.edges.emplace_back((&graph.map_id_node[from]), (&graph.map_id_node[to]), weight); //graph.map_id_node[from].edges是vector<T*> graph.map_id_node[from].edges.push_b原创 2021-09-30 18:11:45 · 395 阅读 · 0 评论 -
杨辉三角,一个vector实现,不复制,不用队列。
昨晚写到纸上,今天晚上调通,本来想要动态数组,但是发现这块的知识还欠缺,用着有问题。自己基础知识一直有问题,真是心急,要学习的知识好多,都不知道先学哪个。 整个代码效率应该很低,因为进行了大量的判断。 目前没有在网上搜到一样的代码,有点小虚荣。#include #include using std::cin; using std::vector; using std::cout; usi原创 2016-07-13 23:21:36 · 582 阅读 · 0 评论 -
多维数组与指针
今天在写遍历二维数组的时候,突然思考这个问题,原因在于作内层循环时,对指针和数组理解不到位。 虽然一直都会也写遍历二维数组,但是原先从没有想过这个问题。(逃) 头文件 #ifndef TREBLE_H #define TREBLE_H #include typedef int int_array[3]; void DisplayArray1(int(&a)[2][3]); vo原创 2016-06-09 18:17:24 · 321 阅读 · 0 评论 -
c++可变长参数的函数
#include #include #include #include int tiny_sum(int i,...) { int j=i; va_list ap; va_start(ap,i);//将ap指向参数i后面的参数,也就是说第一个参数会被跳过。 while (true) { j+=va_arg(ap,int);//获取当前参数的值,同时将a原创 2016-09-11 15:28:00 · 284 阅读 · 0 评论 -
征服c指针笔记
#include using std::cin; using std::cout; using std::endl; void Func_1(int i) { cout<<i<<endl; } int main() { /*int a[3]; int *pa=a; int (*parray)[3]=&a; cout<<pa<<endl; cout<<parray<<endl;原创 2016-09-17 10:49:21 · 311 阅读 · 0 评论 -
优先队列(非模板函数,是int)
发现了一个可能是书里的错误,在swim函数中while检测的条件 void priorityQueue::Swim(size_t t) { inArr[0]=inArr[t]; while (inArr[t/2]<inArr[t])//这里我认为不对,我认为因是inArr[0] { inArr[t]=inArr[t/2]; t/=2; } inArr[t]=inArr原创 2016-08-14 16:11:54 · 356 阅读 · 0 评论 -
栈实现,不是用template做的.
用单链表来实现栈,插入和删除的部分很有意思。 写完这个感觉突然理解了书上说的适配器的观点,类就是这样,不管你底层实现是什么,表现成什么就好了,是一个黑盒。 头文件Mystack.h #ifndef MYSATCK_H #define MYSTACK_H struct Node { int data; Node *next; }; class LUStack { publi原创 2016-07-24 20:33:19 · 227 阅读 · 0 评论 -
数组在表达式中解释为指针的规则受抑制的三种情况
总结来于《征服C指针》,前桥和弥#include using std::cin; using std::cout; using std::endl; int main() { //..以下三种情况 数组在表达式中解释为指向其第一个元素的指针的规则受到抑制 int arr[3]; //此处是sizeof 表达式,表达式可以不用括号括起来 //此时数原创 2016-12-13 22:49:14 · 390 阅读 · 0 评论 -
拷贝控制和引用计数
#include using std::endl; using std::cin; using std::cout; #include using std::string; struct HasPtr_value { //new 返回一个指向对象的指针 HasPtr_value(string curr = string("")):ptr(new string(curr)){ } int d原创 2016-12-26 23:47:00 · 228 阅读 · 0 评论 -
c++ prime 课后题 文本查询程序
根据书里的提示写的。 提示: 1.使用vector保存文本; 2.用map保存 >的关键字,和关键字所属行号。 3.使用ifstream,istringstream,ostream来解析文本,输出结果 是完全自己写的实现,和书里的结构不太一样,但处理查询的思路是相同,毕竟提示已经给到这个地步了。 头文件 #include #include #include #include原创 2017-01-20 14:56:43 · 345 阅读 · 0 评论 -
c++继承中的构造函数与拷贝控制
#pragma once #include #include #include class Disc_Quote;//Disc_Quote即将被使用,它将是Quote的派生。若只声明,无需写出它的 派生访问列表 class Quote//类在被用作基类之前,必须已经定义,而不仅仅是声明,派生类需要知道基类有什么样的成员 { public: Quote() { std::cout原创 2017-02-10 23:37:47 · 480 阅读 · 0 评论 -
队列简要实现,是queue,不是dequeue
#ifndef MYQUEUE_H #define MYQUEUE_H struct Node { int data; Node *next; }; class LUqueue { public: LUqueue(); ~LUqueue(); void Push(int data); int Top(); void Pop(); private: void Insert(No原创 2016-07-24 21:09:11 · 473 阅读 · 0 评论 -
三种方法检测数组边界
c++primer里的一道题 int *a; int a[]; int a[10]; 三种形参都一样,都被认为是int *a。 能检测边界的只有这种 int(&a)[10]。 #include using std::cin; using std::cout; using std::endl; int Sum1(int *begin,int *end) { int sum=0原创 2016-05-31 20:54:11 · 3241 阅读 · 0 评论 -
C++指针理解《一》
贴个代码,注释比较清楚了。对于局部指针变量的问题,参见http://ask.csdn.net/questions/246619,感谢这么多热心人回答这个问题。 #include using std::cin; using std::cout; using std::endl; const int* pointParmas(const int *t); int*& pointBoom();原创 2016-04-02 13:36:07 · 210 阅读 · 0 评论 -
AVL树单选转和双旋转
看了好几天树了,也算有点心得。学树,必须要图。这里有两篇里的博客,在结合书,我用的是《数据结构与算法分析C++版》就可以了。 http://blog.csdn.net/a454042522/article/details/8591421 http://blog.csdn.net/vesper305/article/details/13614403 在AVL树中必须平衡的点叫做原创 2016-04-02 14:06:30 · 822 阅读 · 0 评论 -
C++PRIMER 学习笔记
2016/3/3 cerr 对象又叫作标准错误,通常用来输出警告和错误信息给程序的使用者。而 clog 对象用于产生程序执行的一般信息。 告诉编译器要使用 iostream 库。尖括号里的名字是一个。 头文件。程序使用库工具时必须包含相关的头文件。#include 指示必须单独写成一行——头文件名和 #include 必须在同一行。通常,#include 指示应出现在任何函数的外部。而且习原创 2016-03-23 10:40:19 · 1326 阅读 · 0 评论 -
在数组中选择k
不得不说auto关键字真的很好用 #include #include using std::vector; using std::cin; using std::cout; using std::endl; class SelsctK { private: vector arr; int flag = 0; public: SelsctK(vector& a) :arr(a)原创 2016-03-23 20:29:01 · 356 阅读 · 0 评论 -
《21天学通C++》读书笔记,名字很奇怪,但写的还蛮好,
变量长度指的是:程序员声明变量时,编译器将预留多少内存,用于存储赋给该变量的数据。变量的长度随类型而异,C++提供了一个方便的运算符——sizeof,可用于确定变量的长度(单位为字节)或类型。 在有些情况下,根据赋给变量的初值,很容易知道其类型。例如,如果将变量的初值设置成了 true,就可推断其类型为bool。在C++11中,可不显式地指定变量的类型,而使用关键字auto 使原创 2016-03-23 10:42:04 · 804 阅读 · 0 评论 -
printdigit打印小数的一个问题,递归(问题)
用递归打印小数,主要问题在于寻找小数的位数,首先解决小数和整数的分离;其次是小数的位数。 1.小数和整数的分离: int num; double dic; num = int(n); dic = n - num; n是传进的double形参,num用强制转换获得整数部分,dic是获得小数部分。 但是dic是有问题的,因为3.45-3可能等于0.459999,而不是0.45。原创 2016-03-24 11:30:39 · 818 阅读 · 0 评论 -
C++中的函数指针与函数对象的总结(转载,作者佚名)
C++中的函数指针与函数对象的总结 以下是对C++中的函数指针与函数对象的使用进行了详细的分析介绍,需要的朋友可以参考下 篇一、函数指针 函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。 函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。 函数指针的声明方法: 数据类型标转载 2016-03-28 16:12:51 · 283 阅读 · 0 评论 -
桶排序
#include #include int MaxValue(std::vectorb); void BarrelSort(int c[], std::vectorb) { int max = MaxValue(b); int* a=new int [max+1]; for (int i = 0; i < max+1; i++) { a[i] = 0; } for (std::原创 2016-04-19 20:08:33 · 438 阅读 · 0 评论 -
《c++primer 》string *pstr = new string; *pstr = str;的疑问
题目:编写程序定义一个 vector 对象,其每个元素都是指向 string 类型的指针,读取该 vector 对象,输出每个 string 的内容及其相应的长度。 疑问出在string *pstr = new string; *pstr = str;看了很多解答,汇总一下。 #include #include #include using std::cin; using std::cou原创 2016-05-30 17:10:45 · 680 阅读 · 0 评论 -
C++Primer习题6.12
编写一个小程序,从标准输入读入一系列 string 对象,寻找连续重复出现的单词。程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身。跟踪重复次数最多的单词及其重复次数。输出重复次数的最大值,若没有单词重复则输出说明信息。例如,如果输入是: #include #include using std::cin; using std::cout; using std:原创 2016-05-31 16:43:38 · 425 阅读 · 0 评论 -
采用递归求数组里面求最大子序列的算法(手绘图解)
本文改编自我在知乎的回答。http://t.cn/RqPi9FO 先上代码。 private static int maxSumRec( int [ ] a, int left, int right ) { int maxLeftBorderSum = 0, maxRightBorderSum = 0; int leftBorderSum = 0原创 2016-03-25 08:41:07 · 874 阅读 · 0 评论