list resize会产生意想不到的结果
std::list resize giving unexpected results
我只是在学习,有一个可能很愚蠢的问题。
我有两个容器,一个是向量,一个是列表。它们都被整数1 2 3 4填满。初始化后,我将容器的大小调整为7,然后打印容器的内容。
#include <iostream>
#include <vector>
#include <list>
int main ()
{
std::list<int> lst= {1,2,3,4};
std::vector<int> vec = {1,2,3,4};
lst.resize(7);
vec.resize(7);
for (auto p = lst.begin(); p!=lst.end(); ++p)
std::cout<<"List: "<<*p<<std::endl;
for (auto p = vec.begin(); p!=vec.end(); ++p)
std::cout<<"Vector: "<<*p<<std::endl;
return 0;
}
在输出中我得到:
List: 1
List: 2
List: 3
List: 4
List: 0
List: 1994995248
List: 0
Vector: 1
Vector: 2
Vector: 3
Vector: 4
Vector: 0
Vector: 0
Vector: 0
我是否需要明确地告诉列表我要添加0来避免这种情况?
正如其他用户发布的那样,lst.resize(7,0)
将解决您的问题。使用lst.resize(7)
并省略初始化值告诉编译器该值是什么并不重要(可能是因为稍后要设置它)。这允许操作系统将任何随机值留在内存中,而不是花费资源来更改它。
另一方面,Vector
容器包含自动将项初始化为零的代码。
相关文章:
- 为什么在递归中使用循环会产生意想不到的结果?
- 字符到int8_t转换会产生意想不到的结果?
- libc++ 对 std::map/set::equal_range 的实现给出了意想不到的结果
- 微小加密算法实现会产生意想不到的结果
- 使用 std::set 的 .begin() 和 .end() 函数会产生意想不到的结果
- 在我的C++链表实现中取消引用节点指针,给出意想不到的结果
- C++正则表达式Visual Studio Community 2015给出<regex>意想不到的结果
- istringstream int8_t产生意想不到的结果
- 划分 OpenCV 垫会产生意想不到的结果
- 提升精神,提升任何意想不到的结果
- regex_match给出意想不到的结果
- 从 PASCAL 到 C++ 的代码转换给出了意想不到的结果
- 意想不到的结果c++
- 在lambda上使用条件运算符调用std::any_of会得到意想不到的结果
- vector::insert在VS2010中执行意想不到的结果
- list resize会产生意想不到的结果
- CUDA: 2D数组索引产生意想不到的结果
- 将字符串转换为整数会产生意想不到的结果
- 在c++中,一些宏语句可能会产生意想不到的结果
- Visual Studio可变宏展开会产生意想不到的结果