gpt4 book ai didi

c++ - 如何将 map, vector> 输出到输出文件?

转载 作者:行者123 更新时间:2023-11-28 04:07:59 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的机器学习算法,该算法接收一段文本,将其解析为一个集合和一个列表,从类型为 vector > 的映射中获取上下文,列表的大小为 M,并且然后输出类似于输入文本的文本正文。当我将 map 从 type > 切换到上面的类型时,问题就来了,编译器向我抛出一个错误,其中包含一个又大又长的错误代码,据我所知,这意味着我做错了什么。 (至少我认为是因为问我今天过得怎么样似乎不太可能)

我将我的列表、集合、映射输出到单独的文件,并且我尝试以不同的方式嵌套我的迭代循环,但输出看起来都与映射有关。

//context: state is a list<string>, M is currently 2, wordList is my input text which has been parsed, and outputFile is my ofstream.

for (int i = 0; i < M; ++i) {
state.push_back("");
}
for (list<string>::iterator it = wordList.begin(); it != wordList.end(); ++it) {
wordMap[state].push_back(*it);

//this is the main code that is broken
outputFile.open(fileMap.c_str());
for (map<list<string>, vector<string> >::iterator itm = wordMap.begin(); itm != wordMap.end(); ++itm) {
for (list<string>::iterator itl = itm->first.begin(); itl != itm->first.end(); ++itl) {
outputFile << " " << *itl;
}
for (vector<string>::iterator itv = itm->second.begin(); itv != itm->second.end(); ++itv) {
outputFile << ", " << *itv;
}
outputFile << endl;
}
outputFile.close();


state.push_back(*it);
state.pop_front();
}

我希望输出类似于:
我,传奇,快乐,饥饿,疲倦,...
“我是”是关键,其余是添加标点符号的值。

相反,我得到的是这样的:
我是,传奇
我是,
我是,happyhungry
我,累了,渴了,暖和了,要去打我的电脑,...

这是我的编译器给我的错误代码:

error: conversion from ‘std::list<std::basic_string<char> >::const_iterator 
{aka std::_List_const_iterator<std::basic_string<char> >}’
to non-scalar type ‘std::list<std::basic_string<char> >::iterator
{aka std::_List_iterator<std::basic_string<char> >}’ requested

for (list<string>::iterator itl = itm->first.begin(); itl != itm->first.end(); ++itl)

最佳答案

... conversion from ... const_iterator to ... iterator ... requested

因此,您尝试在 const 容器上使用 iterator,而不是 const_iterator

这是因为 std::map(或任何关联容器)中的键是常量。您可以只使用较新的 for (auto &ref : container) 形式来避免键入所有长迭代器类型名称。它更省力且不易出错。

关于c++ - 如何将 map<list<string>, vector<string>> 输出到输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359455/

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