C++vector使用的一些注意事项-创新互联

1. 初始化

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的怀安网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

      c++ 11以后新增了大括号{}的初始化方式,需要注意与()的区别,如:

        std::vector<int> vecTest1(5);         //初始化5个元素,每个都是0

        std::vector<int> vecTest2{ 5 };       //初始化1个元素,值是5

C++ vector使用的一些注意事项

2.  添加元素:push_back

      通过push_back添加新的元素进入vector后,vector的内存有时候会发生变化,这取决于size和capacity大小,当然这些都是系统来处理的,详细可以参考stl源码

       当size<capacity的时候,直接加到末尾,不会变化

       当size==capacity的时候,会重新申请另外一块内存,然后copy过去加到尾部,这个时候就会有变化了。

       对于stl的容器,都有成员:

                begin()  //起始位置

                end() //结束位置

                size() //当前大小

        capacity() //当前容量,即已申请的内存大小

    vector是一段连续的内存空间,有三个标识内存的位置,start,end,finish, size=end-start, capacity=finish-start

    很多时候在使用vector的时候,会看到size=capacity,这个时候直接添加元素到尾部,内存明显是不够的,此时会重新在别处分配一块大小足够

    有时候也有size<capacity, 这个时候就直接加在尾部了。

std::cout << "vecNum push back init" << std::endl;
vector<int> vecNum(5);
std::cout << "vecNum addr: " << &vecNum << std::endl;
for(auto i = 5; i < 10; i++)
{
 vecNum.push_back(i*10);
 std::cout << "vecNum push_back(" << i << ")=" << i*10 << std::endl;
 
 std::cout << "vecNum.size() = " << vecNum.size() << ",vecNum.capacity() = " << vecNum.capacity() << std::endl;
 std::cout << "vecNum.begin() addr: " << &(*vecNum.begin()) << std::endl;
}
std::cout << "vecNum addr: " << &vecNum << std::endl;

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

当前文章:C++vector使用的一些注意事项-创新互联
网页URL:https://www.cdcxhl.com/article26/ddhscg.html

成都网站建设公司_创新互联,为您提供网站制作微信公众号网站设计公司云服务器网站导航品牌网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站建设