あなたは複数のことを混乱させているようです。
まず、オブジェクトのベクトルのベクトルがあります。それは良い!ただし、これはオブジェクトであり、ポインタではありません(これも良いです)。したがって、ポインタだけがnullになる可能性があるため、nullにすることはできません(最後にもう一度、これは良いです。無効なメモリアクセスはなく、nullポインタの例外があります…)。オプションの要素を処理する場合は、さまざまな戦略から決定する必要があります。
- それらを構造に挿入しない
- ポインタを使用してnullに設定する(その場合は、スマートポインタを使用してください)
- boost::optionalを使用する
第二に:あなたはポインタとインデックスを混乱させています
std::vector<std::vector<Objekt>>::iterator row_it; // where does this std came from ?
std::vector<Objekt>::iterator element_it; // the iterator points to an element
for(row_it = m_pole.begin(); row_it != m_pole.end(); ++row_it) { // Get the habit to pre-increment
for(element_it = row_it->begin(); element_it != row->end(); ++element_it) {
*element_it = nullptr; // This won't work, as it's an object, not a pointer
}
}
第三に:c ++ 11には素晴らしいイテレータがあります(それ以外の場合はBOOST_FOREACHを使用します):
for(auto & row : m_pole) // reference is importante !
for(auto & element : row)
element = nullptr; // again, can't work because it's an object