gpt4 book ai didi

c++ - std::vector 大小?

转载 作者:可可西里 更新时间:2023-11-01 18:09:16 26 4
gpt4 key购买 nike

程序:

#include<vector>

int main() {
std::vector<int>::size_type size=3;
std::vector<int> v{size};
}

编译时

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

产生错误:

ppp.cpp: In function ‘int main()’:
ppp.cpp:5:28: error: narrowing conversion of ‘size’ from ‘std::vector<int>::size_type {aka long unsigned int}’ to ‘int’ inside { } [-fpermissive]
ppp.cpp:5:28: error: narrowing conversion of ‘size’ from ‘std::vector<int>::size_type {aka long unsigned int}’ to ‘int’ inside { } [-fpermissive]

http://www.cplusplus.com/reference/stl/vector/vector/写着

explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );

我希望使用该构造函数。

谁能解释一下?

最佳答案

您没有调用将 vector 设置为初始大小的构造函数。

std::vector<int> v{size};

上面创建了一个 vector包含单个 int值为 size 的元素.您正在调用此构造函数:

vector( std::initializer_list<T> init, const Allocator& alloc = Allocator() );

大括号初始化器列表被推断为 std::initializer_list<size_type>然后必须执行收缩转换,因为 vector本身包含 int

要设置 vector 的初始大小,请使用:

std::vector<int> v(size);  // parentheses, not braces

另外,vector您列出的构造函数不再存在,它已在 C++11 中删除并由以下两个构造函数替换:

vector( size_type count, const T& value, const Allocator& alloc = Allocator());

explicit vector( size_type count );

cppreference.com与 cplusplus.com 相比是一个更好的引用。

关于c++ - std::vector 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12716201/

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