C++ 如何使用C++;具有用户定义结构的向量?

C++ 如何使用C++;具有用户定义结构的向量?,c++,vector,visual-studio-2013,C++,Vector,Visual Studio 2013,我正在尝试使用向量管理一组结构,但不断收到错误消息 该向量在头文件中声明为: vector< TLE_Values, allocator<TLE_Values> > SavedSatellites; 并由构造函数使用默认值初始化 在主程序代码中,在确定了所需的元素数(CountItemsInFile())后,我尝试使用以下方法展开向量列表: SavedSatellites.push_back(CountItemsInFile()); 但是,这将返回以下编译器错误消息:

我正在尝试使用向量管理一组结构,但不断收到错误消息

该向量在头文件中声明为:

vector< TLE_Values, allocator<TLE_Values> > SavedSatellites;
并由构造函数使用默认值初始化

在主程序代码中,在确定了所需的元素数(CountItemsInFile())后,我尝试使用以下方法展开向量列表:

SavedSatellites.push_back(CountItemsInFile());
但是,这将返回以下编译器错误消息:

error C2664: 
'void std::vector<TLE_Values,std::allocator<TLE_Values>>::push_back(const TLE_Values &)' : cannot convert argument 1 from 'int' to 'TLE_Values &&'
1>          Reason: cannot convert from 'int' to 'TLE_Values'
1>          No constructor could take the source type, or constructor overload resolution was ambiguous.
错误C2664:
'void std::vector::push_back(const TLE_Values&'):无法将参数1从'int'转换为'TLE_Values&'
1> 原因:无法从“int”转换为“TLE_值”
1> 没有构造函数可以采用源类型,或者构造函数重载解析不明确。
另一个线程建议向量需要用0初始化,这样的用户定义类型不会发生这种情况。 我错过了什么?我哪里出错了?如何用我的结构创建初始向量? 有很多关于使用类型(int)的向量的文档,但如果不使用整数,文档就不多了。

这里的关键是:

void push_back (const value_type& val);
push_back
不接受
int
,它接受与
向量
保持的类型相同的参数。您需要给它一个
TLE\u值
对象

您也不需要预先调整
向量的大小;您只需继续呼叫
向后推
,直到完成。

此处的are键:

void push_back (const value_type& val);
push_back
不接受
int
,它接受与
向量
保持的类型相同的参数。您需要给它一个
TLE\u值
对象

您也不需要预先调整
向量的大小;您可以继续呼叫
向后推
,直到完成。

以扩展向量使用

SavedSatellites.resize(CountItemsInFile());
如果您只想为其保留内存,但保持向量大小不变,并准备好后续推回,而无需重新分配内存:

SavedSatellites.reserve(CountItemsInFile());
展开向量使用的步骤

SavedSatellites.resize(CountItemsInFile());
如果您只想为其保留内存,但保持向量大小不变,并准备好后续推回,而无需重新分配内存:

SavedSatellites.reserve(CountItemsInFile());

OP可能想
调整大小()
。同意,但我认为他们不需要这样做。似乎他们对设置插入的
向量感到困惑,并试图在填充之前调整其大小。希望我的编辑能为他们澄清这一点。@computerfreaker如果你知道应该始终调整的大小,否则你就浪费了分配…@BeyelerStudios
push_back
在这种情况下使用的插入方法是错误的,因为它总是添加一个额外的元素
resize
后接
push_back
只会浪费空间。@computerfreaker
push_back
当你知道大小并且
reserve
+
push_back
会浪费边界检查……OP可能想
resize()
同意,但我认为他们不需要这样做。似乎他们对设置插入的
向量感到困惑,并试图在填充之前调整其大小。希望我的编辑能为他们澄清这一点。@computerfreaker如果你知道应该始终调整的大小,否则你就浪费了分配…@BeyelerStudios
push_back
在这种情况下使用的插入方法是错误的,因为它总是添加一个额外的元素
调整大小
后接
推回
只会浪费空间。@computerfreaker
推回
当您知道大小时总是错误的,
保留
+
推回
浪费边界检查。。。