2017-06-15 8 views
3

value_typeのSTLコンテナでの用途は何ですか? MSDNからSTLコンテナでのvalue_typeの使用は何ですか?

// vector_value_type.cpp 
// compile with: /EHsc 
#include <vector> 
#include <iostream> 

int main() 
{ 
    using namespace std; 
    vector<int>::value_type AnInt; 
    AnInt = 44; 
    cout << AnInt << endl; 
} 

私はvalue_typeは、特にここに達成しないかを理解していませんか? 変数はintでもかまいませんか?コーダは、ベクトルに存在するオブジェクトの種類が何であるかを調べるのが怠惰であるために使用されますか?

私はこれについて明確にしていたら、私は私がallocator_typesize_typedifference_typereferencekey_typeなどを理解することができるようになると思う。..

+1

はC考えてみましょう++ 03。 'std :: vector 'の正しい要素の型は何ですか? – Quentin

+0

これは単なる一般的なことですか? – InQusitive

+1

これは質問には反応しませんが、 'std :: endl'が行うすべてのものが本当に必要ですか? '' \ n ''は行を終わらせます。 –

答えて

8

はい、あなたの例では、あなたが必要なことを知ることは非常に簡単ですint。複雑になるのは汎用プログラミングです。私は一般的なsum()機能を書きたい場合たとえば、私はその要素があるコンテナの種類を反復処理すると、どのような種類を知るためにそれを必要とするので、私はこのようなものを持っている必要があります:

template<typename Container> 
typename Container::value_type sum(const Container& cont) 
{ 
    typename Container::value_type total = 0; 
    for (const auto& e : cont) 
     total += e; 
    return total; 
} 
+0

これと、関数宣言でContainerを返すだけの違いは何ですか? – BigBrownBear00

+0

@ bigbrownbear00すべての要素の合計が必要な場合は、コンテナ全体を返すことは望ましくありません。コンテナに保持されているタイプのオブジェクトだけが必要です。 – NathanOliver

+0

複数のコンテナをサポートしたい場合は、なぜこれを行うのかがわかります。しかし、ベクトルを送信した場合は、テンプレート型を返すことができます。 – BigBrownBear00

関連する問題