无法将代码整数值硬代码为向量

Unable to hard code integer value into vector

本文关键字:代码 向量 整数      更新时间:2023-10-16

我正在尝试使用C 进行对矢量的自学。

据我所知,与数组相比,向量更具动态性和有效性。

为了进行练习,我尝试将不同数据类型的值存储到向量中并从向量打印这些值。

因此,我开始尝试将一些值对向量的不同数据类进行编码,例如整数,字符串和double。

因此,经过一些研究,我试图将一些整数和双重价值硬编码到矢量中。

std::vector<int> stockID = {023}; 
std::vector<double> stockPrice;
stockPrice.push_back("50.50");
std::vector<int> stockChange =  {100}; 
std::vector<int> transactionDate = {151212};

但是,它返回了我一个称为 conversion of int/double to non-scarlar type的错误。

但是,当我试图将代码重视为矢量字符串时,似乎没有任何问题。

std::vector<string> stockItem; 
stockItem.push_back("Samsung Phone");
std::vector<string> category;
category.push_back("Electronic");
std::vector<string> subCategory;
subCategory.push_back("Mobile Phone");

我可以询问字符串向量与int和double vector的工作方式有所不同以产生此类错误。

在问题的评论部分中指出。

""中引用的任何内容都是C 中的字符串静态。您的stockPrice仅存储double,并且从字符串字符处到double

没有这种隐式转换

如果您想进入矢量stockPrice。应该像

stockPrice.push_back(50.50);

而不是

stockPrice.push_back("50.50");

您可能想调用vector的构造函数,因此请删除一些=符号:

std::vector<int> stockID{023}; 

btw, 023是19。

当然,pusk_back是一个成员函数,因此您只能在某些功能主体内调用(如A 语句),您需要传递适当的类型。显然,"50.50"是字符串文字,而不是浮点字面的字面。所以这应该有效:

void f() {
  std::vector<double> stockPrice;
  stockPrice.push_back(50.50);
}

假设它出现在顶级(不在另一个功能的体内)。

不要忘记启用所有警告&amp;编译时的调试信息,例如如果使用GCC,则使用g++ -Wall -g编译。确保至少学习C 11(不是标准的一些较旧版本)。也许通过-std=c++11如果您有 g++的一些旧版本。我建议(2017年2月)至少使用一些GCC 6。

我正在尝试使用C 对向量进行自学。

不要研究向量,但整个C (C 11或C 14)编程语言(这是一种困难而复杂的编程语言)。因此,请阅读最近的版本编程 - 使用C 的原理和实践,另请参阅一些C 参考网站。

还查看现有免费软件的源代码(例如,在github上)(在github上)(请确保它是近期且真正的C 11或更高)。

顺便说一句,这应该有效

 std::vector<std::string> category{"Electronic","Furniture"};