
C++
Allen_Xu17
这个作者很懒,什么都没留下…
展开
-
一个程序看C++中输入作为判断语句的逻辑
统计输入中每个值出现了多少次:int currVal = 0, val = 0; if (std::cin >> currVal) { int cnt = 1; while (std::cin >> val) { if (val == currVal) ++cnt; else { std::cout <&l...原创 2018-02-27 13:19:49 · 2480 阅读 · 0 评论 -
C++的类(初步篇)
/*类是C++ 中最重要的特性之一。实际上,C++最初的设计焦点就是能定义使用上像内置类型一样自然的类类型(class type)------《C++ primer (中文版)》(第五版)**************************************************************************************简而言之,我们使用类,定义一个所谓的“类...原创 2018-02-27 16:20:48 · 274 阅读 · 0 评论 -
C++中带符号类型和无符号类型
摘自《C++ Primer(中文版)》(第五版)-------仅作为个人学习笔记之用。//**************************************************************************************************************带符号类型和无符号类型 除去布尔类型和扩展的字符型之外,其他整型可以划分为带符号...转载 2018-02-27 19:20:37 · 2067 阅读 · 0 评论 -
C++中int型向无符号类型的转换
在日常生活中,我们知道,加上一个负数,等于减去这个负数的绝对值。那么在C++里,是否和我们平时的认知是一样的呢?//*******************************************************************************************************看一段小代码:int i=-42;unsigned j=10;std::c...原创 2018-02-27 22:02:54 · 2961 阅读 · 1 评论 -
C++中两个unsigned型数值相减
有代码:unsigned u1 = 42, u2 = 10;std::cout<<u2 - u1 <<std::endl;它的结果是什么?下面研究一下过程。在我们现实生活中,10-42=-32,但是在C++里面并不是这样。得到-32后时int型,要把它再放入unsigned型,则必须取其模。取模过程上一篇笔记中已经有记录:原码—反码—补码。所以,先把32化成二进制,然后在...原创 2018-02-28 09:29:46 · 3521 阅读 · 2 评论 -
C++中指向指针的引用
在阅读书籍《C++ primer》时,有一个有趣的语句:int *&r = p;这个语句表达的含义是什么?首先,我们知道,在C++11中新增了右值引用。即int &b=a;这就是引用b绑定对象a,此时就相当于b是a的别名。接下来,分析这个语句。要理解r的类型到底是什么,最简单的方法是从右向左阅读r的定义。离变量名最近的符号对变量的类型有最直接的影响。这句话极为重要,应当熟记。那么,...原创 2018-02-28 21:17:36 · 609 阅读 · 0 评论 -
C++中const和指针的故事
分类:顶层const 和 底层const。如何理解:1.顶层const 是 const指针,意思是 指针本身是个常量。alright,指针本身是个常量,那么久意味着这个指针本身是不能更改的。例如:int i = 0;int *const p1 = &i;这里的p1,就是一个顶层const。用上面讲的来理解:p1首先是一个const,然后是个指针,所以结合起来就是int 型的const指...原创 2018-02-28 22:51:02 · 163 阅读 · 0 评论 -
手痒刷题系列:3/1日刷题记录
————题目摘自某projects网站,代码都是我自己写的。————只是为了 分享和记录自己写代码。第一题:如果我们列出所有低于10的自然数是3或5的倍数,我们得到3,5,6和9,这些倍数的总和为23。找到1000以下所有3或5的倍数的总和。答案:233168.codes:C++版:#include<iostream>int Find_The_Number(int i);int m...原创 2018-03-01 22:52:42 · 393 阅读 · 0 评论 -
手痒刷题系列:3/2刷题记录
//*************************************************************************************************************************第一题:2520是可以被1到10中的每个数字除以没有任何余数的最小数字。什么是可以被1到20的所有数字整除的最小正数?答案:codes:C++:#incl...原创 2018-03-02 21:05:05 · 334 阅读 · 0 评论 -
nyoj 蛇形填数 问题
题目如下:描述在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:10 11 12 19 16 13 28 15 14 37 6 5 4输入直接输入方陈的维数,即n的值。(n<=100)输出输出结果是蛇形方陈。样例输入3样例输出7 8 16 9 25 4 3PS:此题虽为算法入门题,但也耗费了我大半天的时间,说明我的水平还是有待提高!(哭)分析:在解决本题的过程中...原创 2018-03-18 22:27:32 · 262 阅读 · 0 评论 -
C++顺序表用vector定义,以及一个简单的插入算法
PS:四月末赶紧写一篇,保持每月全勤!!//*************************************************************************************************************************最近开始学习数据结构,手边有一本C描述的,作为C++的真爱粉,当然要把他们都改造成C++形式啦!!!顺序表的C定义...原创 2018-04-30 12:35:32 · 889 阅读 · 0 评论 -
leetcode ---- 链表 ------ 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾的)节点,您将只被给予要求被删除的节点。比如:假设该链表为 1 -> 2 -> 3 -> 4 ,给定您的为该链表中值为 3 的第三个节点,那么在调用了您的函数之后,该链表则应变成 1 -> 2 -> 4 。分析题目:1.操作:要求为删除一个节点。2.所给条件:(1)非末尾节点(2)您将只被给予要求被删除的节点//*...原创 2018-05-02 04:47:34 · 486 阅读 · 0 评论 -
leetcode-----链表-----反转链表
将一个链表反转:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:...原创 2018-05-03 10:24:00 · 136 阅读 · 0 评论 -
leetcode-----刷题的一些错误总结
2018.5.4更新:在做链表题目时经常遇到这样的报错:"Runtime Error Message:reference binding to null pointer of type 'struct value_type'Last executed input: []一直没有搞懂是什么意思,在网上查询相关信息时,阅读到博主 @zy2317878(不知道如何@博主)的文章之后(连接在下),Lee...原创 2020-06-14 07:56:29 · 5556 阅读 · 1 评论 -
leetcode-----链表-----回文链表
请检查一个链表是否为回文链表。进阶:你能在 O(n) 的时间和 O(1) 的额外空间中做到吗?/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *...原创 2018-05-04 12:40:27 · 247 阅读 · 0 评论 -
leetcode-----链表-----环链表
给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?//想了一段时间,第一次做到这种环链表的情况。有点思路,又感觉到有一层问题突破不了。//如果求助某度和某歌,发现关于判断回环链表的算法基本是两个指针,分别快慢前进,毫不客气的学习了!/** * Definition for singly-linked list. * struct ListNode { * int ...原创 2018-05-04 16:35:08 · 142 阅读 · 0 评论 -
leetcode----字符串------830. Positions of Large Groups
In a string S of lowercase letters, these letters form consecutive groups of the same character.For example, a string like S = "abbxxxxzyy" has the groups "a", "bb", "xxxx", "z" and "yy".Call a gr原创 2018-05-07 10:47:39 · 278 阅读 · 0 评论 -
leetcode----字符串----831. Masking Personal Information
We are given a personal information string S, which may represent either an email address or a phone number.We would like to mask this personal information according to the following rules:1. Email ad...原创 2018-05-07 21:24:00 · 347 阅读 · 0 评论 -
leetcode----数组------605. Can Place Flowers(种花问题)(5_18gengxin)
//最近在忙本科毕设,跨专业伤不起!!//本题国服通过率20%,外服30%Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, flowers cannot be planted in adjacent plots - they would compet...原创 2018-05-14 21:09:41 · 298 阅读 · 0 评论 -
leetcode----循环-----441. Arranging Coins(排列硬币)
//凑够10题随手做了一个。。//感觉是目前为止唯一一个和“easy”难度相当的。。。//本题国服通过率27%,外服通过率36.5%You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.Given n, find t...原创 2018-05-14 21:29:10 · 366 阅读 · 2 评论 -
C++ 中三目运算符及左值的学习笔记
#include<iostream>using namespace std;//三目运算符功能的增强//1.//在C语言中,表达式的运算结果放在寄存器中。且表达式的返回值是一个具体的数//在C++ 中表达式返回的是变量自身,//2.//C++编译器是如何做到的?//三目运算符应当返回一个变量,即,表达式返回一个内存空间---内存的首地址---指针;//即为:*...原创 2018-07-25 10:55:58 · 314 阅读 · 0 评论 -
C++中对于const进一步学习
//C++中 const 的表现struct Teacher { char name[64]; int age;};//结构体变量是对象的时候用.,结构体变量是指针的时候用->;int operatorTeacher01(const Teacher *Pt){ //Pt->age = 10;//不通过---指向的内存空间里的东西不能被修改 return 0;}...原创 2018-07-25 16:28:04 · 188 阅读 · 0 评论 -
C++面向对象程序设计案例:
//案例1:设计立方体类[cube],求出立方体的面积和体积;// 求两个立方体,是否相等(全局函数和成员函数); class MyCube1{public: void setABC(double a,double b,double c) { m_a = a; m_b = b; m_c = c; } double setA() { return ...原创 2018-07-28 17:11:55 · 2094 阅读 · 0 评论 -
C++学习:引用
1.引用的基础:为某一变量的同一地址取一个别名。#include<iostream>using namespace std;int main(){ int a = 0; int &b = a; printf("b:%d\n", b); b = 100; printf("a:%d\n", a); a = 200; printf("b:%d\n", b...原创 2018-07-26 09:09:39 · 324 阅读 · 0 评论 -
C++对C函数参数的扩展
//C++对C函数的扩展://1.inline内联函数:---记住结论就行/*C++中的const常量可以替代宏常数定义,如:const int A = 3; #define A 3C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!)将一块代码进行宏替换C++中推荐使用内联函数替代宏代码片段C++中使用inline关键字声明内联函数 inli...原创 2018-07-26 17:59:48 · 230 阅读 · 0 评论 -
C++中的类---封装与访问控制
//*******************************************************************************************//类的封装:/*基本概念:1.封装是面向对象程序设计最基本的特性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中就是用类和对象实现的;--封装:也就是把客观事物封装成为抽象的类,并且类可以把自...原创 2018-07-27 17:20:46 · 243 阅读 · 0 评论 -
C++类的构造与析构函数(一)
//对象的构造与析构;/*前言创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。为了解决这个问题,C++编译器提供了构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。*///构造函数:成员变量初始化;//析构函数:用完...原创 2018-07-31 16:35:21 · 308 阅读 · 0 评论 -
C++类的构造与析构函数(二)
//主要研究的是---赋值构造函数(拷贝构造函数(复制构造函数))class Test{public: Test() { m_a = 0; m_b = 0; cout << "无参构造函数" << endl; } Test(int a, int b) {//有参构造函数 m_a = a; m_b = b; cout << ...原创 2018-07-31 16:43:42 · 172 阅读 · 0 评论 -
C++编译器的操作:类的声明和实现的分开
实际项目开发中需要进行类的声明和实现的分开:具体步骤如下:Sept1:右键源文件-》添加-》新建项;Sept2:新建一个类;Sept3:会出现一个 class.h 和 class.cpp 两个文件;其中 .h文件用于写类的声明,.cpp用于写类的实现;Sept4:在 .h 文件中写声明,类中的成员函数写成声明形式就ok;Sept5:...原创 2018-07-27 18:08:31 · 536 阅读 · 0 评论 -
C++拷贝函数调用中的浅拷贝与深拷贝的问题
//浅拷贝会导致程序bug,所以应当避免浅拷贝;造成浅拷贝的原因:在使用字符串、数组等需要间接赋值的情况时,我们利用指针,往往会导致同一内存空间有两个名称,进而导致同一内存空间最后被析构两次,因此会产生严重bug。原因:1.在上述情况下使用了C++编译器的默认构造函数;2.在上述情况下使用了默认的等号操作符:解决与问题如下:#include<iostream&g...原创 2018-08-01 17:10:13 · 322 阅读 · 0 评论 -
C++构造函数的初始化列表
//当一个类的成员变量中含有其他类的时候,如何进行初始化?#include<iostream>using namespace std;//之前是在学习一个对象的操作,现在开始学习多个对象;class A {public: A(int _a) { a = _a; cout <<"构造函数--"<< "a" << a <原创 2018-08-02 11:12:12 · 299 阅读 · 0 评论 -
leetcode--1. 两数之和--用map
题目描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码如下:C++class Solution {public:...原创 2018-08-02 23:46:29 · 164 阅读 · 0 评论 -
leetcode----20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...原创 2018-08-08 16:08:28 · 167 阅读 · 0 评论 -
leetcode 22. 括号生成--C++
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]class Solution {public: vector<string> generateParent原创 2018-08-18 08:38:58 · 696 阅读 · 0 评论 -
23. 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6Merge k sorted linked lists and return it as one sorted ...原创 2018-08-22 10:44:59 · 190 阅读 · 0 评论 -
25. k个一组翻转链表
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->...原创 2018-08-26 12:53:50 · 236 阅读 · 0 评论 -
27. 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...原创 2018-08-28 11:46:29 · 143 阅读 · 0 评论 -
26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2018-08-28 11:51:41 · 151 阅读 · 0 评论 -
28. 实现strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needl...原创 2018-08-29 09:50:41 · 157 阅读 · 0 评论 -
226.翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1/** * Definition for a binary tree node. * struct TreeNode { * in...原创 2018-11-03 19:56:46 · 195 阅读 · 0 评论