C/C++
cc509a
这个作者很懒,什么都没留下…
展开
-
C++ 字符串運算
string cstring - 字串運算一、讀字串,直到遇見空白、換行、檔案結束為止。 string s1, s2;cin >> s1 >> s2; char s1[100], s2[100];cin >> s1 >> s2;二、讀字串,直到一定數量,或者遇見空白、換行、檔案結束為止。 string s;cin >> setw(50) >> s; char s[1转载 2014-12-07 12:39:35 · 687 阅读 · 0 评论 -
删除单链表的倒数第N个节点
容易 删除链表中倒数第n个节点查看运行结果 37%通过给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。注意链表中的节点个数大于等于n样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.挑战原创 2015-04-14 14:23:24 · 510 阅读 · 0 评论 -
c++ 11 中的智能指针
l unique_ptr :不允许多个指针共享资源,可以用标准库中的move函数转移指针l shared_ptr :多个指针共享资源l weak_ptr :可复制shared_ptr,但其构造或者释放对资源不产生影响原创 2015-05-18 22:51:32 · 822 阅读 · 0 评论 -
c++11 中的移动构造函数
在现实中有很多这样的例子,我们将钱从一个账号转移到另一个账号,将手机SIM卡转移到另一台手机,将文件从一个位置剪切到另一个位置……移动构造可以减少不必要的复制,带来性能上的提升。l C++11标准中提供了一种新的构造方法——移动构造。l C++11之前,如果要将源对象的状态转移到目标对象只能通过复制。在某些情况下,我们没有必要复制对象——只需要移动它们。l C++11引入移动语义原创 2015-05-19 23:50:14 · 1430 阅读 · 0 评论 -
c++ 中常量指针和指针常量
C++11使用nullptr关键字,是表达更准确,类型安全的空指针指向常量的指针不能通过指向常量的指针改变所指对象的值,但指针本身可以改变,可以指向另外的对象。例int a;const int *p1 = &a; //p1是指向常量的指针int b;p1 = &b; //正确,p1本身的值可以改变原创 2015-05-19 23:59:56 · 540 阅读 · 0 评论 -
c++ 中的空指针和void指针
指针空值nullptr#include using namespace std;int main() {//!void voidObject; 错,不能声明void类型的变量void *pv; //对,可以声明void类型的指针int i = 5;pv = &i; //void类型指针指向整型变量int *pint = static_cast(pv); //void指针转换为in原创 2015-05-20 00:03:29 · 1254 阅读 · 0 评论 -
C++11:override 与 final
C++11:override 与 finaloverride多态行为的基础:基类声明虚函数,继承类声明一个函数覆盖该虚函数覆盖要求: 函数签名(signatture)完全一致函数签名包括:函数名 参数列表 const下列程序就仅仅因为疏忽漏写了const,导致多态行为没有如期进行显式函数覆盖- C++11 引入显式函数覆盖,在编译期而非运行期捕获此类错误原创 2015-06-07 16:13:55 · 637 阅读 · 0 评论 -
LintCode 字符串转化成正数(atoi)
困难 转换字符串到整数15%通过实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。您在真实的面试中是否遇到过这个题? Yes样例"10" =>10"-原创 2015-07-16 17:59:46 · 1525 阅读 · 0 评论 -
c++vector简单实现
const int DEFAULT_CAP = 3;template class vector { // int capacity; T* _data; int _size; public: //const vector ():capacity(DEFAULT_CAP),_size(0),_data(new T[capacity])原创 2015-07-24 15:15:28 · 794 阅读 · 0 评论 -
string 简单实现
namespace ss{ class string { friend ostream& operator <<(ostream&, const string&); char *_str; public: string():_str(new char[1]){ _str[0] = '\0'; }原创 2015-07-24 16:03:57 · 605 阅读 · 0 评论 -
C++中的内存错误(muduo读书笔记)
C++中可能出现的内存错误大致有这么几个方面:1,缓冲区溢出2,空悬指针/野指针3,重复释放4,内存泄露5,不匹配的new和delete6,内存碎片正确地使用智能指针可以有效地解决前5个问题1:缓冲区溢出:std::vector/std::string或者自己编写的buffer class来管理,自动记住用缓冲区的长度,并通过成员函数而不是裸指针来修改2:野指针原创 2015-04-19 22:53:54 · 514 阅读 · 0 评论 -
c++中的constexpr与inline
constexpr关键字是c++11中新的标准,用来定义常量表达式,用此关键字修饰的函数可以在程序编译阶段运行。原创 2015-04-06 18:15:49 · 1654 阅读 · 0 评论 -
c语言库函数 strcpy 源碼 实现
提供两个版本1常规版原创 2014-11-19 17:36:53 · 1029 阅读 · 0 评论 -
ltoa 实现 长整型转化为字符串 源码(类似itoa)
char *ltoc(long a,char *s){ unsigned long b,c; if (a == LONG_MIN) { b = LONG_MAX + 1UL; c = b; } if (a<0) { b = -a; c = -a; } else原创 2014-11-20 01:27:48 · 1286 阅读 · 0 评论 -
C++函數指針和函數對象的總結
轉自:http://www.cnblogs.com/lvpengms/archive/2011/02/21/1960078.html篇一、函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名转载 2014-12-28 18:33:34 · 495 阅读 · 0 评论 -
C++自己实现一个简单地Vector
直接贴代码Vector.h#ifndef __LeetCode__Vector__#define __LeetCode__Vector__#include#include using namespace std;typedef int Rank;//static const int DEFAULT_CAPACITY = 3;template class Vector{原创 2014-12-29 10:58:07 · 852 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记1
构造函数语义学1,在合成的默认构造函数中,只有成员对象,和基类子对象会被初始化,其他非静态成员变量都不会被初始化。2,原创 2015-02-22 15:08:36 · 716 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记2
对于class X{};class Y : public virtual X{};class Z : public virtual X{};class A : public Y,public Z{}; sizeof X 的结果为1,因为空类编译器会插进去一个char 用来辨识不同的对象sizeof y,z的结果为4,因为虚继承会产生一个指向虚函数表的指针sizeof原创 2015-03-17 22:52:39 · 640 阅读 · 0 评论 -
C++ String类 实现
转的#pragma once#include #include #include namespace trivial{// A trivial String class that designed for write-on-paper in an interviewclass String{ public: String() : data_(new char转载 2015-03-11 10:19:01 · 509 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记3
对于一个类的成员变量的存取,如果成员是静态变量,那么通过指针(->)和通过对象(.)存取是一样的;原创 2015-03-29 16:19:54 · 453 阅读 · 0 评论 -
C++的内存分配
栈区:用来存放局部的变量,函数参数等,由系统自动分配和释放,分配方式类似于数据结构的栈。堆区:动态内存去,由程序员手动分配和释放,比如new,delete,malloc,free,分配方式类似于链表。全局区:全局变量和静态常量常量区:存放常量,由系统释放,大部分情况下,虚函数表也在这个区域,也有在代码段的可能代码端:存放二进制代码原创 2015-03-22 23:42:20 · 481 阅读 · 0 评论 -
c++ json与protobuf 转换
/* * data: 2018-04-14 * author: cc509a * email: * protocol buffer and json convert each other * support array ,enum*/#ifndef MYLIB_JSON_2_PB# define MYLIB_JSON_2_PB#include "jso...原创 2018-11-23 16:42:22 · 9185 阅读 · 0 评论