c++
lyz@csdn
这个作者很懒,什么都没留下…
展开
-
superlu_dist安装
1. 官网下载最新版superlu_dist。2. 修改 run_cmake_build.sh如下,#!/bin/bashrm -vfr xxx-build; mkdir xxx-build; cd xxx-build;export PARMETIS_ROOT=/export/home/xxx/Software/ParMETIS/parmetis-4.0.3export PARMETIS_BUILD_DIR=${PARMETIS_ROOT}/build/Linux-x86_64expor原创 2021-11-15 15:49:38 · 1959 阅读 · 0 评论 -
第三方库宏定义冲突解决办法
假如项目用到的两个第三方库,lib_a和lib_b中,头文件a.h和b.h存在宏定义冲突的问题。那么可以创建一个源文件c.cpp和c.h,将lib_a或lib_b的头文件封装在c.cpp中,在c.h中提供新的接口声明方便自己程序调用即可。...原创 2021-07-02 23:13:12 · 2074 阅读 · 0 评论 -
c++ vector调用reserve()函数后,迭代器end的地址变化
reserve()函数预先分配容量(capacity),但并不添加元素。vector调用reserve()函数后,迭代器begin和end的地址是相同的。end的地址会随着元素的插入而变化。#include <iostream>#include <vector>int main(){ std::vector<int> vec; vec.reserve(5); std::vector<int>::ite原创 2021-07-02 12:08:29 · 411 阅读 · 0 评论 -
内存有重叠时应将memcpy换做memmove
背景:同样的C++代码,同版本的gcc和ld,两台不同操作系统的服务器(服务器A的操作系统Red Hat Enterprise Linux Server release 6.2 ,服务器B的操作系统CentOS release 6.10)。结果:编译正常通过。服务器A上正常运行。服务器B上运行报错。原因:数组内容的复制用了memcpy。因为内存前后有重叠,所以复制后的内容不正确。办法:用memmove替换memcpy。参考:memcpy需要注意的坑...原创 2021-06-13 19:40:33 · 308 阅读 · 0 评论 -
c++同一个命名空间跨文件实现
项目中的所有代码需要共享一个命名空间,根据命名空间的开放性,将命名空间的声明和实现拆分为若干个头文件和源文件。比如,myspace_part1.h中声明namespace myspace { extern int var_a; const double pi = 3.1415926; const int& get_a();}myspace_part2.h中声明namespace myspace { const int var_b = 256;原创 2021-05-27 15:19:47 · 3219 阅读 · 0 评论 -
C++连接静态Fortran库
静态Fortran库可直接被C/C++连接,但需要注意符号名的问题。另外在声明的时候,C++需要加上 extern "C",否则会找不着库文件中的函数。参考:[混编] C++调用Fortran静态库中的函数原创 2021-04-24 10:45:26 · 584 阅读 · 0 评论 -
《c++语言的设计和演化》笔记(六)
The Design and Evolution of C++17.1 引言17.4 一个解决方案:名称空间17.4.3 名称空间的别名17.4.5.1 方便性与安全性17.4.5.2 全局作用域17.4.5.3 重载17.4.5.5 名称空间是开放的17.5.1 派生类17.5.3 清除全局的static17.6 与C语言的兼容性18 Cpp17.1 引言1.“对所有不适合放进某个函数、某个...原创 2019-11-07 16:51:16 · 335 阅读 · 0 评论 -
《c++语言的设计和演化》笔记(五)
The Design and Evolution of C++15.6 函数模板15.6 函数模板1.“之所以引进函数模板,一是因为我们已经很清楚,需要有模板类的成员函数;二是因为如果没有这种东西,模板的概念看起来就不够完全。//declaration of a template function:template<class T> void sort(vector<T&...原创 2019-11-06 12:13:22 · 298 阅读 · 0 评论 -
《c++语言的设计和演化》笔记(四)
The Design and Evolution of C++13.2 抽象类13.2.4 虚函数和构造函数13.2.4.2 基类优先的构造13.2 抽象类13.2.4 虚函数和构造函数13.2.4.2 基类优先的构造1.“构造函数就是要建立起一个环境,使其他成员函数在其中操作。”(p.251~252)2.“考虑下面这个可能引起混乱的例子:class B {public: int...原创 2019-10-25 12:23:21 · 178 阅读 · 0 评论 -
《c++语言的设计和演化》笔记(三)
The Design and Evolution of C++8.2 C++库设计8.2.1 库设计的折中9.2 回顾9.2.2 C++是不是一种统一的语言?9.2.2.2 什么东西本应该排除在外?8.2 C++库设计8.2.1 库设计的折中1.“程序员经常把注意力集中在语言特征上:我要不要使用inline函数?虚函数?多重继承?单根层次结构?抽象类?重载函数?这种关注根本就是错的。这些语言...原创 2019-09-18 11:56:57 · 239 阅读 · 0 评论 -
《c++语言的设计和演化》笔记(二)
The Design and Evolution of C++3.5虚函数3.5.1 对象布局模型3.8 常量3.5虚函数3.5.1 对象布局模型1.“把在一个类中定义的虚函数集合定义为一个指向函数的指针数组,这样,对一个虚函数的调用,也就变成了通过该数组而做的一些简单间接函数调用。对于每一个包含虚函数的类,都存在这样的一个数组,通常称为虚函数表或者vtbl。而这些类的每个对象都包含一个隐式...原创 2019-08-30 11:29:40 · 198 阅读 · 0 评论 -
《c++语言的设计和演化》笔记(一)
The Design and Evolution of C++2.3 类2.3 类1.“既然C++里的class意味着用户定义类型,为什么我不直接称它为type呢?选择用class这个词的基本原因是我不想发明新术语。”(p.27)2.“像C语言中一样,对象的分配可以有3种方式:在堆栈上(作为自动对象),在固定地址(静态对象),或者在自由存储区(在堆,或者说是动态存储区)。与C语言不同的是,C...原创 2019-08-28 10:24:04 · 556 阅读 · 0 评论 -
理解WEIBO源码(一)
理解WEIBO源码(一)C++结构体和枚举C++结构体和枚举结构体里可以定义不同类型的数据,e.g. 字符串、数组、指针、整型等。typedef struct circuit //用typedef定义一个结构体circuit{ size_t num_mos; float gain;}oa;//结构体变量oa枚举里都是整型常量,默认情况下,枚举值从0开始,依次...原创 2019-08-06 08:49:47 · 223 阅读 · 0 评论