gpt4 book ai didi

c++ - 了解 C++ 中的 vector 初始化

转载 作者:行者123 更新时间:2023-11-28 05:17:20 25 4
gpt4 key购买 nike

如果我有一个带有初始化列表的构造函数:

std::vector<int> _list;  

Program::Program() : _list(0)
{
}

即使 vector 自行调整大小,这是否会将所有值初始化为 0?

最佳答案

您似乎误解了所调用的 vector 构造函数的参数。 _list(0) 会将 _list 初始化为长度为零,使用类型 int 的默认值,它也恰好为零,但如果 vector 不存在则无关紧要包含任何元素。它没有明确地将元素 values 设置为零。也许你想让构造函数重复一个值指定的次数?如果是这样,您需要将所需的长度作为第一个参数传递,并将要重复的值作为第二个参数传递。此构造不会影响后续调整大小以扩展 vector ,这将使用默认值填充新的 vector 元素(如果您将一个值指定为 vector::resize 的附加参数,则为不同的值) .

根据您的代码,这里有一个示例来说明,它首先使用值 10 初始化 vector ,重复长度 5,然后将 vector 的大小调整为长度 10。

#include <iostream>
#include <vector>

class Program
{
public:
Program() : _list(0) { }
Program(unsigned long size, int value) : _list(size, value) { }

void ResizeList(unsigned long size)
{
_list.resize(size);
}

void PrintList() const
{
std::cout << "_list = ";
for (const auto& val : _list)
{
std::cout << val << ", ";
}
std::cout << std::endl;
}

private:
std::vector<int> _list;
};

int main()
{
Program p(5, 10);
p.PrintList();

p.ResizeList(10);
p.PrintList();

return 0;
}

输出:

_list = 10, 10, 10, 10, 10, 
_list = 10, 10, 10, 10, 10, 0, 0, 0, 0, 0,

关于c++ - 了解 C++ 中的 vector 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42337184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com