C++坑点随笔

防止头文件重复定义

  1. 有两种方法,分别是

    #ifndef xxx_h
    #define xxx_h
    ...
    #endif
    
    #pragma once
    

头文件已使用上述方法却仍然multiple define

  1. 注意,头文件只能声明不能定义,否则出错
  2. c++类中私有成员中的静态变量初始化方式
//.h文件
class Test{
 static double A; 
 static double B();
};
//.cpp文件
double Test::A= 2.0; //正确的静态成员初始化

vector

erase操作

  • 原理:删除过程中对于指定iter后面的数据全部向前移动进行覆盖

  • 注意点:删除之后所删除位置的iter可能变为野指针(若iter是最后一个)因此对于这种情况要妥善处理

  • 测试代码

#include <vector>
#include <cstdio>
using namespace std;


int main(){
	vector <int> a;
	a.clear();
	a.push_back(1);
	a.push_back(2);
	a.push_back(3);
	
	for(int i = 0; i < a.size(); i++)
		printf("%d ", a[i]);
		
	vector<int>::iterator itr = a.begin();
	a.erase(itr+1);
	
	for(int i = 0; i < a.size(); i++)
		printf("%d ", a[i]);		 
}

Catch2 测试框架中的SECTION

在进行一次大量数据测试时,SECTION进入死循环状态,无法跳出,断点也无法定位问题所在,改变为TEST_CASE直接运行后正常运行,问题未知,猜测与函数中内存限制有关。

posted @ 2019-11-25 10:45  Phoenix_Xie  阅读(245)  评论(0编辑  收藏  举报