От Уилла Otte из списка рассылки ATCD: Я собираюсь предположить, что у вас есть некоторый код, как это:
while (something) {
CORBA::ULong pos = seq.length();
seq.length (pos+1);
seq[pos] = some_value;
}
и наблюдают, что производительность довольно плохо по сравнению с
std::vector<foo> vec;
while (something) {
size_t pos = vec.size();
vec.resize (pos + 1);
vec[pos] = foo (bar); // or the much more succinct vec.push_back (foo (bar));
}
правый?
Ответ скорее всего потому, что ваша реализация STL помогает вам и обеспечивает геометрический рост при использовании изменения размера. Стандарт C++ не имеет таких требований (для изменения размера, push_back гарантированно растет геометрически), поэтому вам, вероятно, повезло и не должно зависеть от этого поведения.
Последовательности TAO не предоставляют это для вас, поэтому, если вы неоднократно изменяете размер, вы увидите низкую производительность, потому что каждый раз, когда вы изменяете размер, вам придется заплатить за выделение нового буфера и время для копирования всех существующих элементов в новый базовый буфер.
Ваших данных, кажется, не соответствуют вашему вопросу названия – Kevin
mistaken..changed – user1079341