吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 715|回复: 9
收起左侧

[已解决] vector容器相关

[复制链接]
SLCoCo 发表于 2022-6-12 23:10
本帖最后由 SLCoCo 于 2022-6-13 12:43 编辑

已解决:扩容根据编译器的不同每次扩容倍数不同,如果有小数则向下取整
[td]
编译器扩容倍数
GCC2
MSVC1.5
CLANG1.5
[td]
原题:这里为什么容器容量是13,百度了好久也没找到原因。
[C++] 纯文本查看 复制代码
#include<iostream>
#include<vector>
using namespace std;

void printVector(vector<int>& v) {

        for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
                cout << *it << " ";
        }
        cout << endl;
}

void test01()
{
        vector<int> v1;
        for (int i = 0; i < 10; i++)
        {
                v1.push_back(i);
        }
        printVector(v1);
        cout << "v1的容量 = " << v1.capacity() << endl;
}

int main() {

        test01();

        system("pause");

        return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我心飞翔1995 发表于 2022-6-13 07:31
本帖最后由 我心飞翔1995 于 2022-6-13 07:35 编辑

你觉得应该是多少
我这边g++ 11.2.1 给出是 v1的容量 = 16
Eaglecad 发表于 2022-6-13 08:14
这个是扩容方式不同,Linux一般是2倍扩容,Windows是1.5倍扩容。具体可以百度vector的扩容机制。
only998 发表于 2022-6-13 08:24
vtor 发表于 2022-6-13 09:50
我是用vector也遇到了点问题
主要是vector是在一个结构体内,这个结构体是new出来的
往vector内塞6个数据就会触发异常,
不知道楼主有没有遇到我这个问题?
vtor 发表于 2022-6-13 09:52
capacity表达的是vector所占用的空间,不一定是你的元素个数
使用size函数,可以获得vector内元素个数
jsjrj01 发表于 2022-6-13 10:17
Eaglecad 发表于 2022-6-13 08:14
这个是扩容方式不同,Linux一般是2倍扩容,Windows是1.5倍扩容。具体可以百度vector的扩容机制。

赞同,扩容机制不用,不必深究
 楼主| SLCoCo 发表于 2022-6-13 12:38
Eaglecad 发表于 2022-6-13 08:14
这个是扩容方式不同,Linux一般是2倍扩容,Windows是1.5倍扩容。具体可以百度vector的扩容机制。

谢谢大佬明白了。
 楼主| SLCoCo 发表于 2022-6-13 12:40
vtor 发表于 2022-6-13 09:52
capacity表达的是vector所占用的空间,不一定是你的元素个数
使用size函数,可以获得vector内元素个数

这个我知道。我的意思是capacity算出来的容量是怎么算的(已解决)
 楼主| SLCoCo 发表于 2022-6-13 12:41
vtor 发表于 2022-6-13 09:50
我是用vector也遇到了点问题
主要是vector是在一个结构体内,这个结构体是new出来的
往vector内塞6个数据 ...

这个我暂时没遇到过,我刚开始学习没多久。你可以尝试开个帖子把代码贴出来或许有大佬能帮你看看吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表