![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
wyhang0
这个作者很懒,什么都没留下…
展开
-
C++中的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2015-02-26 15:34:05 · 331 阅读 · 0 评论 -
负数求模
最近在一道 Java 习题中,看到这样的一道题:What is the output when this statement executed: System.out.printf(-7 % 3);正整数的取余运算大家都很熟悉,但是对于负数、实数的取余运算,确实给人很新鲜的感觉。于是我对此进行了一些探索。我发现,这里面还是颇有一点可以探索的东西的。自然数的取模运算转载 2016-08-09 16:13:22 · 379 阅读 · 0 评论 -
一个unsigned int 数的二进制表示中有多少个1
这是一道面试题可以用以下的一些方案。第一种是很容易想到的采用循环的方式并且与1进行位与运算,具体代码如下。 1int 数的二进制表示中有多少个1?" title="求一个unsigned int 数的二进制表示中有多少个1?" align="top">unsigned int GetBitNumOfOne_ByLoop1(unsigned int nValue) 2int 数的二进转载 2014-08-03 11:47:26 · 1231 阅读 · 0 评论 -
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。#include #include #include #include #include //#define DEBUG 1 #define NUM 3 int转载 2014-08-03 15:36:37 · 2574 阅读 · 0 评论 -
C++ STL:vector和list
STL 描述:C++标准模块库是一个提供了公共编程数据结构和函数的模板类集合,如双连接表(list),配对数组(map),可扩展数组(vector),大串的存储操作(rope)等。STL库可以从http://www.sgi.com/tech/stl/ 获取。STL可以分为以下几类:容器类:顺序容器:vector:动态数组变量,结构体或对象。可以插入在末尾插入转载 2014-08-03 16:41:05 · 481 阅读 · 0 评论 -
vector和list区别
stl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。l转载 2014-08-03 16:42:07 · 317 阅读 · 0 评论 -
第3章 IPC SAP:用于高效、可移植和灵活的网络编程的C++包装
这篇文章比较好,呵呵,值得学习一下第3章IPC SAP:用于高效、可移植和灵活的网络编程的C++包装Douglas C. Schmidt本论文的一个扩展版本[1](含有在以太网和ATM网络上的性能评测)可在http://www.cs.wustl.edu/schmidt/COOTS-95.ps.Z处获取。3.1 介绍本论文描述采用C++包装类来封装OS进程间通信(IPC)转载 2014-08-04 16:56:34 · 809 阅读 · 0 评论 -
vector中erase用法注意事项
以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性。erase的函数原型有两种形式:iterator erase(iterator position);iterator erase(itera转载 2014-08-08 22:51:02 · 307 阅读 · 0 评论 -
C++Vector用法
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vector转载 2014-08-08 22:52:40 · 283 阅读 · 0 评论 -
std::bad_alloc 内存分配失败(备份)
用C++的new操作符,分配内存,什么时候会失败?【转】Effective C++ 中文第二版 50个有效改善程序设计效率的办法条款7:预先准备好内存不够的情况operator new在无法完成内存分配请求时会抛出异常(以前的做法一般是返回0,一些旧一点的编译器还这么做。你愿意的话也可以把你的编译器设置成这样。关于这个话题我将推迟到本条款的结尾处讨论)。大家都知道,处理内存不够所产生的转载 2014-09-20 22:17:28 · 2098 阅读 · 0 评论 -
在 C/C++ 语言中特定的宏,如 __FUNCTION__
__FILE____LINE____DATE____TIME____FUNC__ __FUNCTION__ 在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用。请注意在IDE环境中,不能识别__func__ ,而要用__FUNCTION__ 代替。Comeau的用户也应使用 _转载 2014-10-23 12:57:41 · 401 阅读 · 0 评论 -
【干货】国外程序员整理的 C++ 资源大全
摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard转载 2014-10-28 10:30:31 · 506 阅读 · 0 评论 -
C++全局变量的声明和定义
参考:http://wrchen.blog.sohu.com/71617539.html(1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。 那么,错误可能在两个地方产转载 2014-11-21 18:48:06 · 420 阅读 · 0 评论 -
使用SMTP 和POP3 协议实现收发邮件(C/C++)
SMTP协议和POP3协议就不详细阐述了 ,网上一搜索会有一大把给你解释的。下面直接贴代码:首先写一个class Sock类,这个类的功能主要是创建套接字(即int sock),用套接字來连接邮箱服务器。类里面还带有send_socket和recv_socket两个函数,其功能分别是向邮箱服务器发送协议指令和接收服务器反馈回来的信息。sock.h文件转载 2014-11-26 14:53:29 · 3166 阅读 · 0 评论 -
32位系统和64位系统变量所占空间总结
随着硬件的不断降价,我们的计算机内存也越来越大。而我们经常使用的Windows操作系统大 都是32位的,4G内存成为一个瓶颈问题。作为软件开发爱好者,如何在64位系统下做程序设计成为了日程中的话题。下面我根据程序在不同平台下的运行情 况,总结了一下C/C++常用数据类型所占的内存空间。Win64, 也就是X64编译配置下: char:1字节;short:2字节;in转载 2015-01-23 10:04:20 · 500 阅读 · 0 评论 -
模板声明与定义要放在同一文件中?
“通常情况下,你会在.h文件中声明函数和类,而将它们的定义放置在一个单独的.cpp文件中。但是在使用模板时,这种习惯性做法将变得不再有用,因为当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明。因此,最好的办法就是将模板的声明和定义都放置在同一个.h文件中。这就是为什么所有的STL头文件都包含模板定义的原因。”[1]"标准要求编译器在实例化模板时必须在上下文中可以查看到其定义转载 2015-01-30 09:12:20 · 1392 阅读 · 0 评论 -
在构造函数/析构函数中调用虚函数
先看一段在构造函数中直接调用虚函数的代码: 1 #include 2 3 class Base 4 { 5 public: 6 Base() { Foo(); } ///< 打印 1 7 8 virtual void Foo() 9 {10 std::cout 1 std::endl;11 }12 };转载 2017-01-09 10:48:25 · 1140 阅读 · 0 评论