簡體   English   中英

可以 std::vector<float> 將自身調整為更小的尺寸?</float>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM