Betrachten Sie den folgenden Code.boost :: stable_vector die Kapazität Mitglied Funktion gibt nicht die zugewiesene Kapazität
#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';
}
Auf laufen diese (auf g ++/Linux), der Ausgang ist:
capacity = 4294967286 (das ist 2^32-10)
Wenn ich boost ersetzen :: Container :: stable_vector mit std :: vector oben, ist die Ausgabe:
Kapazität = 10
ich weiß es auch hätte Kapazität gewesen = 20 oder Kapazität = 64 oder was auch immer, aber das ist immer noch gesund Verhalten.
Welche Kapazität() für stable_vector zurückgibt, scheint (2^32 - N) zu sein, wobei N die mit einem Aufruf von reserve() angeforderte Kapazität ist. Ich habe in der Dokumentation keine solche Definition von Kapazität gesehen: http://www.boost.org/doc/libs/1_56_0/doc/html/boost/container/stable_vector.html#idp33067968-bb.
Offensichtlicher Fehler ist offensichtlich. Scheint in 1.54 eingeführt zu werden. –