C++编程
文章平均质量分 60
yang20141109
这个作者很懒,什么都没留下…
展开
-
vector容器中元素初始化(容器的元素都是副本)
C++容器中的元素类型如果是自己定义的类型,且自己定义的类型没有提供默认的构造函数。比如自己定的类型为Foo,但是提供了一个int型形参的构造函数。那么如下:vector empty; // Ok: no need for element default constructor 无任何构造函数调用vector bad(10); // error: no default construc原创 2015-06-08 22:30:50 · 850 阅读 · 0 评论 -
单链表进行快速排序
单链表进行快速排序:选择尾元素作为枢轴,根据枢轴值把链表划分为两部分,前半部分值小于枢轴值,后半部分值大于枢轴值,划分函数的返回值为指向排好序链表枢轴前一个元素的指针。这个指针有可能是空指针,我们需要做特殊判断。在快排函数中,我们需要对空指针做特殊处理。以下是完整版代码://对单向链表进行快速排序#include#includeusing namespace std;//链表数据结构s原创 2016-04-14 16:30:26 · 849 阅读 · 0 评论 -
动态规划之最长递增子序列
题目一:给定一个长度为N的数组,找出一个最长的单调递增子序列(不一定连续,但是顺序不能乱)。并返回单调递增子序列的长度。 例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},我们返回其长度6。 题目二:在题目一的基础上,我们要返回该子序列中的元素。例如,给定一个长度为8的数组A{1,3,5,2,4,6,7,8}原创 2016-05-08 17:12:24 · 768 阅读 · 0 评论 -
逆波兰表达式求值
给出一个逆波兰表达式,求该逆波兰表达式表达式的值。比如: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6 解析:用栈来实现,遍历当前字符串,如果当前字符串可以转换为数组类型,则当前元素转换为数值,并且入栈,如果是运算原创 2016-04-22 22:33:48 · 600 阅读 · 0 评论 -
C++标准库中next_permutation和pre_permutation实现原理
标准库中next_permutation函数:找当前序列中元素排列的下一个排列,按照字典顺序进行排列。比如说数组排列"123",那么它的下一个排列为"132",并且返回true。如果当前序列没有下一个排列,我们返回false,且把当前排列置为最小的排列,比如说:排列"321",因为该排列已经是最大的排列,所以它没有下一个排列。我们把该排列置为"123",并且返回false。 标准库实现两原创 2016-05-06 17:47:30 · 3502 阅读 · 3 评论 -
C++ 实现矩阵乘法
矩阵相乘的时间复杂度为o(n*n*n)。使用vector>来表示矩阵。#include#includeusing namespace std;vector> matrix_multiply(vector> arrA, vector> arrB){ //矩阵arrA的行数 int rowA = arrA.size(); //矩阵arrA的列数 int colA = arrA[0].原创 2016-03-31 10:58:14 · 16347 阅读 · 2 评论 -
双向Dijstra算法
双向Dijstra算法:在无向带权图中,求从s到t最短路径。双向Dijstra算法的思想是:分别从s顶点和t顶点开始执行单向Dijstra算法,从s点开始执行的Dijstra算法定义为前向Dijstra搜索,从t点开始执行Dijstra算法定义为后向Dijstra搜索。算法结束的条件是:前向(后向)Dijstra搜索求得当前最短路径上的顶点为u,且在后向(前向)Dijstra搜索已经计算出到u的最原创 2015-12-17 16:30:30 · 4977 阅读 · 1 评论 -
自定义简化版本的vector容器
实现一个简单的vector容器,容器中的元素只能容纳整数,默认初始化时,容器的大小为1,且把容器中每个元素的值初始化为0,当向容器中添加元素时,如果此时容器已满,则申请一个新的容器,其大小为原来容器的两倍,并把原先容器中的元素赋值到新容器中,然后再添加新的元素,最后把原来容器的空间给释放。两个容器之间可以相互拷贝,且可以用一个容器构造另一个新的容器。可以用[]操作符访问容器中的元素。其代码如下:#原创 2016-01-01 18:03:07 · 305 阅读 · 0 评论 -
自定义string类
自定义一个简化版本的string类,其中成员函数包括:(1)构造函数。(2)赋值构造函数。(3)赋值操作符(=)。(4)重载操作符([])。(5)比较函数。(6)析构函数。非成员函数只有重载操作符MySting();//无参数构造函数MyString(char *pData);//带参数的构造函数const char& operator[](unsigned int len)const;//重原创 2016-01-01 16:18:48 · 472 阅读 · 0 评论 -
续:vector的push_back和复制构造函数问题
定义一个A类,其中自己定义了复制构造函数和默认构造函数。定义一个A类的对象,把A类的对象添加到vector容器中。其中调用A类复制构造函数次数问题。比如:下列代码:#include#includeusing namespace std;class A{public: A() { cout<<"A()"<<endl; } A(const A &other)原创 2015-08-20 22:39:50 · 2235 阅读 · 0 评论 -
C++ #include<string> 和 using std::string
今天,偶尔写了一个小小的程序,关于字符串问题程序。比如,我想连续打印用户输入的字符串。#include#includeusing std::cin;using std::cout;using std::endl;int main(void){ string text; while(cin >> text) cout<<text<<endl; system(原创 2015-09-04 22:41:47 · 3121 阅读 · 0 评论 -
删除与替换二进制文件中的某些字节数
/*替换与删除二进制文件中的某些文件,并且输出新的文件*/#include #include using namespace std;bool copy_binary_file(const char * szDestFile, const char * szOrigFile){ bool bRet = true; std::ofstream fout(szDestFile, st原创 2017-12-27 18:36:33 · 3296 阅读 · 0 评论