プログラミング上の注意事項の記録

1695 ワード

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を呼び出してプログラムの実行を終了することです.