gpt4 book ai didi

c++ - STL映射,使用类的迭代器和指针

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:06 26 4
gpt4 key购买 nike

我在使用迭代器访问 map 内的数据时遇到问题。我想使用迭代器返回插入到 map 中的所有值。然而,当我使用迭代器时,它不承认它已经过去的类实例中的任何成员。

int main()
{
ifstream inputFile;
int numberOfVertices;
char filename[30];
string tmp;

//the class the holds the graph
map<string, MapVertex*> mapGraph;

//input the filename
cout << "Input the filename of the graph: ";
cin >> filename;
inputFile.open(filename);

if (inputFile.good())
{
inputFile >> numberOfVertices;
inputFile.ignore();

for (int count = 0; count < numberOfVertices; count++)
{
getline(inputFile, tmp);
cout << "COUNT: " << count << " VALUE: " << tmp << endl;

MapVertex tmpVert;
tmpVert.setText(tmp);
mapGraph[tmp]=&tmpVert;
}

string a;
string connectTo[2];

while (!inputFile.eof())
{

//connectTo[0] and connectTo[1] are two strings that are behaving as keys

MapVertex* pointTo;
pointTo = mapGraph[connectTo[0]];
pointTo->addNeighbor(mapGraph[connectTo[1]]);
//map.find(connectTo[0]).addNeighbor(map.find(connectTo[1]));
//cout << connectTo[0] << "," << connectTo[1] << endl;
}

map<string,MapVertex*>::iterator it;
for (it=mapGraph.begin(); it!=mapGraph.end(); it++)
{
cout << it->getText() << endl;

}
}

return 0;
}

编译器输出:

\lab12\main.cpp||In function `int main()':|
\lab12\main.cpp|69|error: 'struct std::pair<const std::string, MapVertex*>'
has no member named 'getText'|
||=== Build finished: 1 errors, 0 warnings ===|

我的 MapVertex 类中有一个名为 getText() 的访问成员,它返回其中的数据。

最佳答案

要修复编译器错误,您需要执行 it->second->getText()作为*iteratorpair<string, MapVertex*> .但是您的代码中还有其他问题。插入映射时,您正在将局部变量的地址插入其中。当您尝试使用 for 迭代 map 时,此地址将无效环形。我建议您将 map 声明为 std::map<string, MyVertex>这样当您插入 map 时,MyVertex 的拷贝 会插入到 map 中。

关于c++ - STL映射,使用类的迭代器和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10275222/

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