2012-02-15 8 views
7

多くのSTLコンテナに表示されるfront()begin()の機能の違いは何ですか?front()とbegin()の違い

+4

'front()'は '* begin()'と同じです。 – ildjarn

+0

なぜこれが下降したのですか?これは有効な質問です。 –

+1

downvoteボタンには「この質問には研究努力が示されていません」と表示されています。 – ildjarn

答えて

12

begin()は、コレクションを反復するために使用できる反復子を返します。front()は、コレクションの最初の要素への参照を返します。

+5

+1少なくとも1つの要素を持つすべてのコンテナに対して、明示的に(または複雑になるように)、 '&c.front()==&* c.begin()'。式の* address-of *を比較すると、値*が同じではなく、*オブジェクト*(つまり、 'c.front()'がそのオブジェクトを逆参照する同じオブジェクトへの参照を生成することが示されますiterator '* c.begin()'を開始してください)。 –

2

front()は、最初の要素への参照を返します。begin()は、イテレータを返します。あなたは空のコンテナにfrontを呼び出すべきではありませんが、それはあなたがイテレータそのbegin戻っデリファレンスない限り、beginを呼び出すためにOKです

注意。

+4

'begin()'も最初の要素がなければ動作します。 –

0

frontメンバーは、リストまたはベクトルの最初のメンバーへの参照を返します。 begin関数は、リスト、マップ、またはベクトルの最初のメンバーに初期化されたイテレータ(ポインタに近い)を返します。 http://www.cplusplus.com/reference/stl/vector/begin/から

1

(文字通り「ベクター::開始」の最初のGoogle結果):最初の要素への参照を返す部材vector::frontとは異なり、この関数は、ランダム・アクセス・イテレータを返すこと

注意。