vector 中的分配器有什么用?
What's with allocator in vector?
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.
Why is the first statement fine
因为 vector 有一个接受两个迭代器的构造函数(和一个带有默认参数的分配器)。这些迭代器代表输入范围的开始和结束。
but second [is not]?
因为 vector 没有接受单个迭代器和分配器的构造函数。
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.
Why is the first statement fine
因为 vector 有一个接受两个迭代器的构造函数(和一个带有默认参数的分配器)。这些迭代器代表输入范围的开始和结束。
but second [is not]?
因为 vector 没有接受单个迭代器和分配器的构造函数。