遺伝子配列決定の課題の一環として、C++ でサフィックス ツリーを作成しようとしています。
void Tree::insert(string ins)
{
Node* iterator = chooseBranch(root, ins.at(0));
string temp;
for(int i=0; i<100; i++)
{
if(iterator->data=="")
.
.
.
chooseBranch()
は、4 つの子のどちらに移動するかを選択する関数であり、このノードが既に存在するかどうかを確認しようとしています。私のノードクラスは次のとおりです。
struct Node{
Node();
string data;
Node* A;
Node* G;
Node* C;
Node* T;
};
この if ステートメントは、gdb を使用してバックトラックしたセグメンテーション違反を引き起こしています。
#0 0x0000003ce249bbd6 in std::string::compare () from /usr/lib64/libstdc++.so.6
#1 0x000000000040185b in std::operator==<char, std::char_traits<char>, std::allocator<char> > ()
#2 0x0000000000401305 in Tree::insert ()
#3 0x00000000004016d4 in Tree::Tree ()
#4 0x00000000004010a2 in main ()
この形式の NULL チェックの何が問題になっていますか? ノードにデータがないかどうかを確認するにはどうすればよいですか?