vector容器相关
本帖最后由 SLCoCo 于 2022-6-13 12:43 编辑已解决:扩容根据编译器的不同每次扩容倍数不同,如果有小数则向下取整
编译器扩容倍数
GCC2
MSVC1.5
CLANG1.5
原题:这里为什么容器容量是13,百度了好久也没找到原因。#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:35 编辑
你觉得应该是多少
我这边g++ 11.2.1 给出是 v1的容量 = 16 这个是扩容方式不同,Linux一般是2倍扩容,Windows是1.5倍扩容。具体可以百度vector的扩容机制。 可能是编译器自动优化? 我是用vector也遇到了点问题
主要是vector是在一个结构体内,这个结构体是new出来的
往vector内塞6个数据就会触发异常,
不知道楼主有没有遇到我这个问题? capacity表达的是vector所占用的空间,不一定是你的元素个数
使用size函数,可以获得vector内元素个数 Eaglecad 发表于 2022-6-13 08:14
这个是扩容方式不同,Linux一般是2倍扩容,Windows是1.5倍扩容。具体可以百度vector的扩容机制。
赞同,扩容机制不用,不必深究 Eaglecad 发表于 2022-6-13 08:14
这个是扩容方式不同,Linux一般是2倍扩容,Windows是1.5倍扩容。具体可以百度vector的扩容机制。
谢谢大佬明白了。 vtor 发表于 2022-6-13 09:52
capacity表达的是vector所占用的空间,不一定是你的元素个数
使用size函数,可以获得vector内元素个数
这个我知道。我的意思是capacity算出来的容量是怎么算的(已解决) vtor 发表于 2022-6-13 09:50
我是用vector也遇到了点问题
主要是vector是在一个结构体内,这个结构体是new出来的
往vector内塞6个数据 ...
这个我暂时没遇到过,我刚开始学习没多久。你可以尝试开个帖子把代码贴出来或许有大佬能帮你看看吧
页:
[1]