Rozważmy następujący kod.doładowanie :: funkcja roli stable_vector nie zwraca przydzielonej pojemności
#include <string>
#include <boost/container/stable_vector.hpp>
#include <iostream>
int main()
{
boost::container::stable_vector<std::string> vec;
vec.reserve(10);
std::cout << "capacity = " << vec.capacity() << '\n';
}
On działa to (na g ++/Linux), wyjście jest:
pojemność = 4294967286 (to 2^32 - 10)
Gdybym zastąpić boost :: pojemnik :: stable_vector z std :: vector powyżej, wyjście jest:
pojemność = 10
wiem, może to również być pojemność = 20 lub pojemność = 64 lub cokolwiek, ale to nadal sane zachowanie.
Jaka pojemność() zwraca dla stable_vector, wydaje się być (2^32 - N), gdzie N jest żądaną pojemnością z wezwaniem do rezerwy(). Nie widziałem takiej definicji pojemności w dokumentach: http://www.boost.org/doc/libs/1_56_0/doc/html/boost/container/stable_vector.html#idp33067968-bb.
Oczywisty błąd jest oczywisty. Wydaje się być wprowadzone w 1.54. –