使用指针 C++ [关闭] 指示 Vector 的索引

Posted

技术标签:

【中文标题】使用指针 C++ [关闭] 指示 Vector 的索引【英文标题】:Directing an index of Vector using a pointer, C++ [closed] 【发布时间】: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”。 【参考方案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 刚刚了解了引用和取消引用。非常感谢分享的知识 不客气

以上是关于使用指针 C++ [关闭] 指示 Vector 的索引的主要内容,如果未能解决你的问题,请参考以下文章

在没有向量、指针的情况下在 C++ 中在运行时增加数组大小 [关闭]

容器(vector)和指针(ptr)的区别

C++ 指针与 std::vector:对长变量有任何影响吗?

c++中的vector是指针吗?

指针定义后 C++ vector.push_back 崩溃

C++ 从函数参数中获取指针 指针传递