[英]Can an std::vector<float> resize itself to a smaller size?
SharedConsumableRotatingBuffer(std::optional<size_t> maxBufferSize_) {
if (maxBufferSize_.has_value()) {
ALOGV(TAG, "SharedConsumableRotatingBuffer resizing buffer to %zu", maxBufferSize_.value());
buffer.resize(maxBufferSize_.value());
ALOGV(TAG, "SharedConsumableRotatingBuffer buffer size: %zu", buffer.size());
}
output:
V/playbackProgressPercentage( 4910): SharedConsumableRotatingBuffer resizing buffer to 17280000
V/playbackProgressPercentage( 4910): SharedConsumableRotatingBuffer buffer size: 17280000
我什至不使用push_back
或任何東西插入元素,我只是在其中執行buffer.data()
和 memcpy 元素。
但是,我總是在這樣做之前檢查邊界。 好吧,事實證明,稍后執行buffer.size()
會給我3840000
,而不是之前的17280000
。
那么std::vector
是否有可能無緣無故地縮小自己?
std::vector<float>
可以將自身調整為更小的尺寸嗎?
是的。 如果您提供的參數小於要resize
的向量的當前size
,則向量的size
將設置為該較小的值,即元素將被刪除。
旁注: capacity
將不受resize
的影響,除非大小超過以前的capacity
。
那么 std::vector 是否有可能無緣無故地縮小自己?
它不會“無緣無故”地縮小。 如果刪除元素, size
會發生變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.