STL库的封装为程序员们提供了很多便利,它在我心中就是数据结构API的规范,一旦用上就再也回不去了。
本文记录学艺不精的我在对vector的size概念上理解不清出来问题,所以记录一下。
size指的是数组的大小(区分容量, 专指已经有数据的部分。
vector<int >data(4);
//这两种方法一样的
//vector<int >data;
//data.resize(4);
cout << data.size()<<endl;
输出 4 ,这时候虽然没有输入任何数据,但是数组内已经有4个值了,验证数组非空。
if (!data.empty())
cout << "非空" << endl;
输出 非空 , 我们看一下数组里存了什么
for (auto it : data)
cout << it << ' ';
输出 0 0 0 0 ,如果是自定义类型输出结果为默认构造函数(我的推测
然后向数组中加入数据,再输出看看
data.push_back(1);
for (auto it : data)
cout << it << ' ';
输出 0 0 0 0 1,可见push_back是从数组尾加入,前面已经有4个元素了,加入后并不是覆盖前面的元素而是增加了数组长度。这里是需要注意的,一般的话,我们创建数组时定义长度是避免数组的动态扩容,而push_back(1)方法的结果明显不是我们想要的 ,这时应该采用 data[i]=1 的方法来为数组赋值,并控制好长度不越界,这样就可以覆盖原先的数据辣!
本文探讨了在使用STL vector时关于size的理解,强调size表示已填充数据的大小,而非容量。通过示例展示了vector默认初始化的值以及push_back()方法的工作原理,提醒程序员在给定长度的vector中赋值时应注意避免动态扩容和越界问题。
3159

被折叠的 条评论
为什么被折叠?



