У меня есть std :: vector значений, для которого я знаю максимальный размер, но фактический размер будет меняться во время использования:
void setupBuffer(const size_t maxSize) {
myVector.reserve(maxSize);
}
void addToBuffer(const Value& v) {
myVector.push_back(v);
if (myVector.size() == maxSize) {
// process data...
myVector.clear();
}
}
Однако в setupBuffer мне нужно получить указатель наначало данных myVector.Я использую стороннюю библиотеку, где я должен кэшировать этот указатель заранее для использования в вызове, сделанном в разделе «обработка данных ...».
void setupBuffer(const size_t maxSize) {
myVector.reserve(maxSize);
cachePtr(&(myVector[0])); // doesn't work, obviously
}
Я не хочу изменять размер () вектор вперед, так как я хочу использовать vector.size () для обозначения количества элементов, добавляемых в вектор.
Итак, есть ли способ получить указатель на буфер вектора после выделения (Reserve ()) но до того, как у него есть какие-либо элементы?Я бы предположил, что буфер существует (и не будет двигаться, пока я ограничу количество значений push_back'd) .... может быть, это не гарантировано?