【问题标题】:Directing an index of Vector using a pointer, C++ [closed]使用指针 C++ [关闭] 指示 Vector 的索引
【发布时间】:2019-02-21 12:32:20
【问题描述】:

出现一个错误,不允许我使用指针将 Vector 的索引移动到另一个函数。

仅供参考:vectorTest 已从包含单词和数字的文件中读取。

错误是下划线vectorData[0] 和状态

“不存在从 std::string 到 std::vector 的合适的用户定义转换”

这里是代码......

class dataInfo
{
private:  

vector <int> idVector; 
vector <string> houseVector;   
vector <string> vectorData;
int idNumber; 
string houseFirst;



public:   

void testClasses(vector <string> vectorTest);
void allocateHouses(vector <string> vectorHouse);  

}; 

void dataInfo::testClasses(vector <string> vectorTest)
{   
    vectorData = vectorTest;


    dataInfo* testPointer = new dataInfo; 

    testPointer->allocateHouses(vectorData[0]); //ERROR IS HERE 
} 

void dataInfo::allocateHouses(vector <string> vectorHouse)
{   
    stringstream ss; 
    ss.str(vectorHouse); 

    while (ss >> idNumber >> houseFirst)
    {
        idVector.push_back(idNumber);
        houseVector.push_back(houseFirst);

    }

    for (int i = 0; i < idVector.size(); i++)
    {
        cout << idVector[i] << " " << houseVector[i] << endl;
    }
} 

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example
  • 什么是vectorData,它是如何声明的?我怀疑是std::vector&lt;std::vector&lt;something&gt;&gt;
  • 您向我们提供了代码并省略了最关键的细节:vectorData 的声明。请修复您的代码示例
  • @Arkadiy 问题已解决。正在将向量的第一个元素传递给另一个向量字符串,而我只需要传递一个“std::string”。

标签: c++ pointers vector


【解决方案1】:

allocateHouse 需要 std::vector&lt;std::string&gt;,但由于您通过 vectorData[0] 传递向量的第一个元素,因此您只传递了 std::string
我假设您只想在那里接受std::string
还有关于不必要的副本和不必要的new 使用的问题。

【讨论】:

  • 谢谢,不需要的副本在哪里?修复似乎有效
  • 如果您需要std::vector&lt;...&gt; 等参数,您实际上声明您将使用您自己的副本。这会导致调用者复制字符串(除非移动)。通常,您可以通过&amp; 使用引用或通过const&amp; 使用常量引用,以防您不更改传递的数据。所以在你的情况下void dataInfo::allocateHouses(string const&amp; vectorHouse)(其他方法也是如此)
  • @l3ck 刚刚了解了引用和取消引用。非常感谢分享的知识
  • 不客气
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多