在STL容器中使用value_type有什么用?

时间:2017-06-15 15:23:42

标签: c++ stl

在STL容器中使用value_type是什么?

来自MSDN:

// 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等。< / p>

1 个答案:

答案 0 :(得分:12)

是的,在您的示例中,很容易知道您需要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;
}