pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

std::vector::resize() 與 std::vector::reserve()

std::vector::resize() vs. std::vector::reserve()(std::vector::resize() 與 std::vector::reserve())
本文介紹了std::vector::resize() 與 std::vector::reserve()的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

這篇文章的評論部分有一個關于使用 std::vector::reserve 的帖子() vs. std::vector::resize().

There is a thread in the comments section in this post about using std::vector::reserve() vs. std::vector::resize().

這是原始代碼:

void MyClass::my_method()
{
    my_member.reserve(n_dim);
    for(int k = 0 ; k < n_dim ; k++ )
         my_member[k] = k ;
}

我認為要在vector中寫入元素,正確的做法是調用std::vector::resize(),不是 std::vector::reserve().

I believe that to write elements in the vector, the correct thing to do is to call std::vector::resize(), not std::vector::reserve().

事實上,以下測試代碼在 VS2010 SP1 的調試版本中崩潰":

In fact, the following test code "crashes" in debug builds in VS2010 SP1:

#include <vector>

using namespace std;

int main()
{
    vector<int> v;
    v.reserve(10);
    v[5] = 2;

    return 0;
}

我是對的,還是錯的?VS2010 SP1 是對的,還是錯的?

Am I right, or am I wrong? And is VS2010 SP1 right, or is it wrong?

推薦答案

有兩種不同的方法是有原因的:

There are two different methods for a reason:

std::vector::reserve 將分配內存但不會調整向量的大小,向量的邏輯大小與之前相同.

std::vector::reserve will allocate the memory but will not resize your vector, which will have a logical size the same as it was before.

std::vector::resize 實際上會修改向量的大小,并會用處于默認狀態的對象填充任何空間.如果它們是整數,則它們都為零.

std::vector::resize will actually modify the size of your vector and will fill any space with objects in their default state. If they are ints, they will all be zero.

reserve 之后,在你的情況下,你需要很多 push_backs 來寫入元素 5.如果您不想這樣做,那么在您的情況下,您應該使用調整大小.

After reserve, in your case, you will need a lot of push_backs to write to element 5. If you don't wish to do that then in your case you should use resize.

關于保留的一件事:如果您隨后使用 push_back 添加元素,直到達到您保留的容量,任何現有的引用、迭代器或指向向量中數據的指針都將保持有效.所以如果我保留 1000 并且我的大小是 5,&vec[4] 將保持不變,直到向量有 1000 個元素.之后,我可以調用 push_back() 并且它會工作,但是之前存儲的 &vec[4] 指針可能不再有效.

One thing about reserve: if you then add elements with push_back, until you reach the capacity you have reserved, any existing references, iterators or pointers to data in your vector will remain valid. So if I reserve 1000 and my size is 5, the &vec[4] will remain the same until the vector has 1000 elements. After that, I can call push_back() and it will work, but the stored pointer of &vec[4] earlier may no longer be valid.

這篇關于std::vector::resize() 與 std::vector::reserve()的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Algorithm to convert RGB to HSV and HSV to RGB in range 0-255 for both(將 RGB 轉換為 HSV 并將 HSV 轉換為 RGB 的算法,范圍為 0-255)
How to convert an enum type variable to a string?(如何將枚舉類型變量轉換為字符串?)
When to use inline function and when not to use it?(什么時候使用內聯函數,什么時候不使用?)
Examples of good gotos in C or C++(C 或 C++ 中好的 goto 示例)
Significance of ios_base::sync_with_stdio(false); cin.tie(NULL);(ios_base::sync_with_stdio(false) 的意義;cin.tie(NULL);)
Is TCHAR still relevant?(TCHAR 仍然相關嗎?)
主站蜘蛛池模板: 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 隧道窑炉,隧道窑炉厂家-山东艾瑶国际贸易| 智能交通网_智能交通系统_ITS_交通监控_卫星导航_智能交通行业 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 电机保护器-电动机综合保护器-上海硕吉电器有限公司 | 最新电影-好看的电视剧大全-朝夕电影网 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 噪声治理公司-噪音治理专业隔音降噪公司| 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 山东信蓝建设有限公司官网 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 加盟店-品牌招商加盟-创业项目商机平台 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 |