У меня есть 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).... возможно, это не гарантируется?