关闭
当前搜索:

c++学习笔记:文本查询程序

文本查询程序: 在给定的文件中查询一个单词出现的次数及其所在行的列表,如果单词在一行中出现多次,那这一行的文本只列出一次 1)使用一个vector来保存文件的一份拷贝,文件的每一行作为vector对象的一个元素。当要打印一行时,使用下标来提取一行的文本。 2)使用istringstream来把每一行分解成一个个单词 3)使用set来保存每个单词在文本中出现的行号,保证行号只出现一次 4)...
阅读(20) 评论(0)

数据结构--链栈的实现

1)栈是一种先进后出的数据结构,这就意味着它的插入和删除都只能在一端进行。可以把栈想象成一端开口的井,所有元素压栈出出栈都是从井口进入,出去。 2)用链表实现栈,通常保留头结点,然后进栈就是在头结点处插入一个结点,出栈就是在头结点处删除一个结点。 结构体声明和函数声明: typedef struct Node { int data; struct Node *next; } St...
阅读(25) 评论(0)

数据结构--链表的实现

结构体声明和函数声明 typedef struct Node { int data; struct Node *next; } link, *link_p; link_p Create(link_p head); void Found(link_p head); link_p Get_node_for_position(link_p head, int position); vo...
阅读(25) 评论(0)

数据结构--顺序表的实现

#include #include #include typedef int ElementType; typedef struct Node *Sequence_list; struct Node { //*********************** int m_capacity; //数组的最大容量 * int m_size; //数组当前存...
阅读(19) 评论(0)

c++学习笔记--行为像指针的类

行为像指针的类: class HasPtr { public: HasPtr(const std::string &str = std::string()) : ps(new std::string(str)), i(0), use(new std::size_t(1)) {} HasPtr(const HasPtr &obj) : ps(new std::string(*obj....
阅读(17) 评论(0)

c++学习笔记--行为像值的类

行为像值的类: #include class HasPtr { public: HasPtr(const std::string &str = std::string()) : ps(new std::string(str)), i(0) {} HasPtr(const HasPtr &obj) : ps(new std::string(*obj.ps)), i(obj.i)...
阅读(35) 评论(0)

c++学习笔记--拷贝控制的三/五法则

c++ primer 第五版第十三章: 第一个基本法则: 1)如果一个类需要一个析构函数,那么几乎可以肯定它也需要一个拷贝构造函数和一个拷贝复制运算符 例子: class HasPtr { friend void swap(HasPtr &obj_1, HasPtr &obj_2); //function declare public: HasPtr(const std::string ...
阅读(26) 评论(0)

Linux程序设计---chown命令的简单实现

chown命令的基本使用格式:chown owner:group filename 所以在命令行中这一行命令有三个参数:第一个是程序的执行文件名,第二个是属主和属组连在一起的字符串,第三个是要修改的文件名 基本思路: chown系统调用的原型: #include #Include int chown(const char *path, uid_t owner, gid_t grou...
阅读(41) 评论(0)

c++学习笔记:动态内存管理类StrVec类的实现

vector类将其元素保存在连续的内存中,vector会预先分配足够的内存来保存可能需要的更多元素。vector每次添加元素时都会检查是否有可用的空间容纳更多的元素,所以每个添加元素的成员函数在添加元素之前都会检查当前所有的内存是否有可用的空间。如果有,就会在下一个可用的位置构造一个对象。如果没有,vector类就会重新分配空间,把原来的元素移动到新的空间去,再释放旧内存。根据这样的特性,所以要用...
阅读(31) 评论(0)

牛客网--链表中倒数第K个结点

题目描述 输入一个链表,输出该链表中倒数第k个结点。 基本思路: 先统计链表的长度length,然后倒数第k个结点就是从头开始数的第length - k + 1个结点。然后遍历整条链表,找到这个结点返回就可以了。 为了程序的鲁棒性,首先得判断链表是否为空,k值是否为0。如果是,则返回nullptr。如果不检查,遇到问题就会崩溃。 /* struct ListNode { int v...
阅读(134) 评论(0)

C++ 内存泄露的几种情况

1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存 2. 没有正确地清除嵌套的对象指针 3. 在释放对象数组时在delete中没有使用方括号 方括号是告诉编译...
阅读(39) 评论(0)

C/C++ -- 内存泄露和野指针

内存泄漏  用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,不能被任何程序再次使用,直到程序结束。即所谓内存泄漏。    注意:内存泄漏是指堆内存的泄漏。  简单的说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这...
阅读(30) 评论(0)

牛客网--用两个栈实现队列

思路: 队列的性质是先进先出,而栈的性质是先进后出。要用两个栈实现一个队列,首先用一个栈用来模拟进队。然后将模拟进队的栈中的元素依次出栈,存入另一个模拟出队的栈中。因为栈的先进后出的性质,元素的顺序全都倒过来了。这时在执行出栈的操作,就把最先进入模拟入队的栈的元素弹了出来。达到类似队列的操作。 class Solution { public: void push(int nod...
阅读(29) 评论(0)

牛客网--合并两条有序链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路: 先new出一个临时头结点,用来指向合并后的新链表并声明一个临时指针,指向这个头结点。声明两个指针分别指向两条链表的第一个结点,然后比较两个值。摘取较小值的结点,较小的结点接到新链表的后面。然后依次移动新链表的临时指针和摘取后的链表的临时指针,直至合并完成。 /* stru...
阅读(41) 评论(0)

牛客网--统计字符

题目描述 给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符。 输入描述: 输入数据一个字符串,包括字母,数字等。 输出描述: 输出首先出现三次的那个英文字符 思路:  题目说的是给定英文字符串,而要统计的是字母,注意是字母,这是个坑。用关联容器map,将读入的字符依次计数,当字符首次出现的字数为三时,输出这个字符,并终止程序。 #include...
阅读(51) 评论(0)

牛客网--替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 基本思路: 新建一条数组,作为储存替换之后的字符串。然后在把新的数组复制到原来的数组,达到替换的目的。class Solution { public: void replaceSpace(char *str,int leng...
阅读(31) 评论(0)

牛客网--二维数组查找

题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 //根据题目描述,二维数组自上而下递增,自左而右递增。所以第一列和最后一行的数字包括了整个二维数组出现的数字,其它位置都是重复。//所以左下角的数字是转折点,应当从这里开始查找 //所以从左下角开始查找,遇到比...
阅读(45) 评论(0)

牛客网--链表反转打印

/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; *///思路:利用栈先进后出的原理,遍历整条链表,依次压栈。然后依次出栈,把元素存到一个v...
阅读(49) 评论(0)

牛客网--句子反转

题目描述 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符) 输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子 #include #i...
阅读(29) 评论(0)

书店程序--C++

//类的实现#ifndef _BOOK_STORE_H_ #define _BOOK_STORE_H_ #include #include #include class Book_store { friend Book_store operator+(const Book_store &obj, const Book_store &ret); friend std::istream &o...
阅读(50) 评论(0)
22条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1225次
    • 积分:208
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章存档