私はC ++にかなり慣れていないので、学んでいる間、多くのJava主義で設計する傾向があります。とにかく、Javaでは、特定のパラメーターに一致するT
からオブジェクトを返す 'search'メソッドを含むクラスがあるCollection< T >
場合、そのオブジェクトを返しnull
ます。オブジェクトがコレクション内に見つからなかった場合は、を返します。次に、私の呼び出し関数でチェックするだけですif(tResult != null) { ... }
C ++では、null
オブジェクトが存在しないと値を返せないことがわかりました。オブジェクトが見つからなかったことを呼び出し元の関数に通知するタイプTの「インジケーター」を返したいだけです。例外的な状況ではないので、例外を投げたくありません。
これは私のコードが今どのように見えるかです:
class Node {
Attr& getAttribute(const string& attribute_name) const {
//search collection
//if found at i
return attributes[i];
//if not found
return NULL; // what should this be?
}
private:
vector<Attr> attributes;
}
どのように変更すれば、そのようなマーカーを付けることができますか?
std::find(first, last, value)
ますlast
。たとえば、一致する要素がない場合に返されます。