编程注意事项记录

1. 用于排序比较的函数定义成static类型函数

static bool comp(const vector &a, const vector &b) 
{
    return a[0] < b[0];
}

2. 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化

class A 
{ 
private: 
static int count ; // 类内声明 
};
 
// 类外定义并初始化,不必再加static关键字
int A::count = 0 ;

3. vector在调用erase方法时,会导致迭代器失效(不仅使所指向被删除的迭代器失效,而且使被删元素之后的所有迭代器失效,所以不能使用erase(it++)的方式),但该方法的返回值是下一个元素的迭代器,所以调用erase方法的代码写法如下:

vector::iterator v = vector_int.begin();
while(v != vector_int.end())
{
    if(*v == 3)
    {
        v = vector_int.erase(v);
        cout << *v << endl;
    }
    else{
        v++;
    }
}

insert方法也有类似迭代器失效的问题。

4. const char*、string和char*的转换

(1)string转const char*

string s = “abc”; 
const char* c_s = s.c_str();

(2)const char* 转string,直接赋值即可

const char* c_s = “abc”; 
string s(c_s);

(3)string 转char*

string s = “abc”; 
char* c; 
const int len = s.length(); 
c = new char[len+1]; 
strcpy(c,s.c_str());

(4)char* 转string

char* c = “abc”; 
string s(c);

(5)const char* 转char*

const char* cpc = “abc”; 
char* pc = new char[strlen(cpc)+1]; 
strcpy(pc,cpc);

(6)char* 转const char*,直接赋值即可

char* pc = “abc”; 
const char* cpc = pc;

5. C/C++  assert()函数用法

#include 
void assert( int expression );

assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。

你可能感兴趣的:(C++,C语言)