在 C++ 中实现地图矢量

Posted

技术标签:

【中文标题】在 C++ 中实现地图矢量【英文标题】:implement vector of maps in C++ 【发布时间】:2019-03-06 04:52:58 【问题描述】:

我正在尝试编写一个代码来制作一个地图向量,通过拆分它来存储部分字符串。这段代码给出了很长的编译错误,我无法理解问题所在。问题在于初始化方式

#include <bits/stdc++.h>
using namespace std;

vector<string> split(string phrase, string delimiter)
    vector<string> list;
    string s = phrase;
    size_t pos = 0;
    string token;
    while ((pos = s.find(delimiter)) != string::npos) 
        token = s.substr(0, pos);
        list.push_back(token);
        s.erase(0, pos + delimiter.length());
    
    list.push_back(s);
    return list;


int main() 
    string line = "tunilib;sebesta;prog lang;14";
    vector<string> splitstring = split(line, ";");
    vector< map<string,string,string,string> > elements;
    map<string,string,string,string> element;
    element["library"] = splitstring[0];
    element["author"] = splitstring[1];
    element["title"] = splitstring[2];
    element["reservation"] = splitstring[3];
    elements.push_back(element);
    for(auto i:splitstring) cout<<i<<" ";
    cout<<"success";
    return 0;

【问题讨论】:

你希望map&lt;string,string,string,string&gt; 做什么? 不要使用#include &lt;bits/stdc++.h&gt; (why) 并避免使用using namespace std; (why)。将两者放在一起是疯狂的。疯狂我说! 疯狂!. 我想存储键值对并像字典一样添加到向量中 有一个名为 std::list 的标准库容器,由于您将整个标准库与程序的前两行一起移植到全局命名空间中,因此您的变量会出现问题同名。 但事实并非如此,问题是由于 vector 声明,我已经测试了删除这个和实现,代码运行良好。 @飞翔 【参考方案1】:

错误在声明中,只需更改,

map<string,string,string,string>

map<string,string>

因为我想创建一个键值对列表。

@user4581301 感谢您的评论

【讨论】:

以上是关于在 C++ 中实现地图矢量的主要内容,如果未能解决你的问题,请参考以下文章

动态创建矢量并在 C++ 中添加到地图

如何改进我的矢量搜索功能?

使用地图代替矢量

在ARCGIS中如何将卫星影像和现有的矢量数据进行配准

什么叫矢量地图 关于矢量地图介绍

arcgis如何加载需要矢量化的地图?