C/C++
文章平均质量分 52
Southan97
本科计算机科学与技术专业,现软件工程专业在读研究生
展开
-
C++头文件中加#ifndef #define #endif的作用浅析
通常,在做一个项目工程时,往往有很多很多的文件,而由于面向对象的特性,为实现模块化和编写出稳定的、可读性高、易维护的、健壮的代码,往往将类封装起来。假如某个头文件被多个文件包含使用,当把这些文件编译链接成一个可执行文件时,就会出现大量重复定义的错误,而在头文件中加#ifndef #def #endif能避免头文件的重定义。 例:如编写头文件complex.h 在头文件开头写上两行原创 2017-02-21 21:42:48 · 1682 阅读 · 0 评论 -
C++ 读入整行带空格的字符串,并将字符串按照特定符号划分成多个子串
在处理输入的时候,有时需要输入一整行字符串,而字符串中包含类似空格,tab这样的特殊符号,直接用cin读入时不能得到预期效果,这里介绍一下C++中的整行字符串读入方法。istream& getline (istream& is, string& str, char delim);istream& getline (istream&& is...原创 2018-03-27 18:05:38 · 6058 阅读 · 1 评论 -
Mac OS 下解决Clion不能用<bits/stdc++.h>头文件的方法。
Mac OS 下解决Clion不能用<bits/stdc++.h>头文件的方法。 首先,Mac OS 自带的g++编译器版本比较低,许多c++的新特性都不支持,所以可以先在终端下下载g++ 的新版本,如g++7,代开Clion后在preference里找到Cmake并修改参数如下:原创 2017-08-07 13:11:38 · 8056 阅读 · 3 评论 -
windows环境下重定向运行失败的问题!
windows环境下重定向运行失败的问题!freopen("data.in", "r", stdin); freopen("data.out", "w", stdout);运行失败.据星哥说:“是由于windows环境会对后缀进行特殊处理,不同于Linux系统”,解决方案也很简单,先新建data.txt文本文件,然后把数据保存在其中,然后只需要修改后缀使文件名为data.in即可。原创 2017-07-24 22:22:56 · 1592 阅读 · 0 评论 -
ACM文件测试数据及文件操作
原文:http://blog.csdn.net/u012852986/article/details/45009251?ref=myread一、文件测试数据以前在做题时,遇到需要控制台输入数据的时候,总是从键盘一个一个敲进去,再一个个检查输出的是否正确。虽然当时也感觉效率太低了,但一直没想到还有解决办法。最近在看算法竞赛入门经典时,才发现可以用文件读入读出的方式检查程序。先上代转载 2017-04-27 16:45:24 · 1054 阅读 · 0 评论 -
memset 函数, fill函数的区别及应用, fill函数给多维数组赋值。
memset 函数, fill函数的区别及应用, fill函数给多维数组赋值。* memset函数: 1:按照字节赋值 2:头文件在<cstring>中注:由于memset函数是按照字节赋值的,所以对int型数组用该函数时,只能是1或-1,否则会出错,这里,不管数组是多少维的,语法均为:原创 2017-04-27 15:58:38 · 984 阅读 · 0 评论 -
指针运算的一点小结
详情看代码,有详细注释。特别强调的是当 p 指向一个变量比如 a 时, 我们发现尽管 delete p 了,但是似乎依然可以得到 a 的值, 这其实是错误的,比如 a 最初为 5, delete运算后令 a = 10, 但此时 *p还是等于5. delete的时候,系统只是将指针指向 的堆空间回收,但是没有将这个指针变量的值赋为NULL,所以delete一个指针后应将其赋为NULL, 不然容易原创 2017-04-21 11:05:37 · 378 阅读 · 0 评论 -
C++中的STL以及库函数在ACM中的运用
C++中的STL以及库函数在ACM中的运用原创 2017-05-12 19:19:49 · 616 阅读 · 0 评论 -
C++ int long long double 等数据范围!
由于机型的不同,确实存在int到底是几个字节的问题。具体见下表:现在给一种姿势,看看到底其数据范围是多少,在ACM竞赛中,经常会遇到数据溢出的问题,这里我们来看看int, long long的最大值是多少位的即10的多少次方,并以此我们大概能估计应该给变量定义什么样的类型或者怎样对算式进行恒等变形(运算顺序等)而有效预防溢出问题。原创 2017-04-29 17:53:14 · 20056 阅读 · 0 评论 -
C++风格控制输出!
C++控制精度 输出形式转载 2016-12-05 23:19:55 · 462 阅读 · 0 评论 -
数据结构之单链表——C++模板类实现
数据结构之单链表——C++模板类实现原创 2017-03-05 19:42:30 · 951 阅读 · 0 评论 -
数据结构之顺序表——C++模板类实现
数据结构之顺序表——C++模板类实现#ifndef LINEARLIST_H_INCLUDED#define LINEARLIST_H_INCLUDED#include using namespace std;templateclass LinearList {public: LinearList() {cout << "Constructing a LinearList in defaul原创 2017-03-05 19:40:00 · 636 阅读 · 0 评论 -
继承、友元机制。
C++中的继承权限问题和友元函数。友元函数及友元类: 对于一个类的私有成员仅有类的成员函数才能直接访问,可是在一些应用程序中,我们必须给予别的类和成员函数直接访问该类私有成员的权利。这就需要把这些类和函数声明为该类的友元。为了统一格式,一般的,friend语句总是紧跟在类标题语句之后了。例如重载运算符<<时,如果我们不将其定义为友元,则必须在类中定义一个函数去访问类的私有成员,然后在<<重载函数中调用前面提到的函数,但如果我们重载<<时将其定义为friend就不需要前面所说的函数就可以直接访问类中的私有原创 2017-02-26 17:35:13 · 686 阅读 · 0 评论 -
动态分配一维数组、二维数组!
C++中动态内存分配,某些数组在我们定义时并不能明确知道其范围,他们虽调用的变化而变化,当然我们也可以预定一个比较大的MAXNLEN但这种静态声明有时会浪费比较多的内存空间。我们可以用C++的动态内存分配机制来动态地确定一个数组的空间大小,使用动态内存分配时,一定不要忘了delete!!!原创 2017-02-26 16:04:22 · 1044 阅读 · 0 评论 -
动态内存分配,创建一个对每一行列数不同(元素个数不同)的二维数组!
上一篇提到了C++中的动态内存机制以及如何动态建立数组,这里给出更具一般性的算法,对一个二维数组,每一行所含元素个数不相同的情况。#include using namespace std;templatebool make2dArray(T ** &arr, int numberOfRows, int arrNumberOfColumns[]) { //创建一个二维数原创 2017-02-26 16:37:49 · 1259 阅读 · 0 评论 -
用Pthread对共享内存系统进行多线程并行编程
在并行程序设计中,有针对分布式内存系统的和针对共享内存系统的。对于分布式内存系统,每个核访问其独立直接相连地内存速度很快,而访问远端内存(其他核直连的内存)速度很慢,可能比执行一次浮点运算慢数千倍。针对分布式内存系统,可以采用MPI进行编程,这里主要是针对共享内存系统亦即本地多核主机进行并行编程。 这里采用拉格朗日公式粗略地计算PI, 虽然这个公式收敛很慢,但这里仅仅是作为学习并行编程的一个...原创 2018-03-28 22:43:23 · 1492 阅读 · 0 评论