向量中的分配器是什么?

问题描述

vector<int> data(istream_iterator<int>(cin),istream_iterator<int>{});   cout<<"Size is : " << data.size() << endl; //compile success

vector<int> data1(istream_iterator<int>(cin),std::allocator<int>{});   cout<<"Size is : " << data1.size() << endl; //compile failure

 error: no matching function for call to ‘std::vector<int>::vector(std::istream_iterator<int>,std::allocator<int>)’    vector<int> data1(istream_iterator<int>(cin),std::allocator<int>{});

为什么第一个陈述可以,但第二个陈述可以呢?在这种情况下,向量不采用int类型的分配器吗?我正在尝试allocator s。

解决方法

为什么第一个语句很好

因为vector具有一个接受两个迭代器的构造函数(以及一个带有默认参数的分配器)。这些迭代器代表输入范围的开始和结束。

但是第二[不是]?

因为vector没有接受单个迭代器和分配器的构造函数。