成都网站建设设计

将想法与焦点和您一起共享

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

1. 初始化

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

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

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

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

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

2.  添加元素:push_back

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

       当size

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

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

                begin()  //起始位置

                end() //结束位置

                size() //当前大小

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

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

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

    有时候也有size

std::cout << "vecNum push back init" << std::endl;
vector 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使用的一些注意事项-创新互联
当前地址:http://chengdu.cdxwcx.cn/article/ddhscg.html