【发布时间】:2018-05-08 07:13:36
【问题描述】:
在vector < map< string, int > > 中输入。
当我知道vector的索引时,我只想打印出map的字符串,但它不起作用。
发生错误
cout<< myVec.at(intTmp)->first<<"\n";
我不确定如何访问矢量内的地图。
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
int N, M;
vector<map<string, int> > myVec;
bool isDigits(string& s){
for(int i=0; i<s.size(); ++i){
if(!isdigit(s[i])) return false;
}
return true;
}
int main()
{
cin >> N >> M;
for(int i=1; i<=N; ++i){
string tmp;
cin.clear();
getline(cin, tmp);
myVec.emplace_back(tmp, i);
}
for(int i=1; i<=M; ++i){
string tmp1;
cin.clear();
getline(cin, tmp1);
if(isDigits(tmp1)){
int intTmp = atoi(tmp1.c_str());
cout<< myVec.at(intTmp)->first<<"\n";
}
}
return 0;
}
【问题讨论】:
-
看起来您将地图用作单个键值对。为此使用
std::pair。 -
myVec[anyIndex]不是指针或迭代器。这是一个map<string, int>对象。 -
我选择 map 是因为我需要使用 find() 函数。 pair 没有 find() 函数。此代码仅包含打印部分,但我需要 find() 来避免使用搜索功能。
-
“需要使用 find()”是什么意思?你需要在向量中找到特定的元素吗?还是在地图上?您仍然可以使用
vector<pair<string, int>找到向量的元素。 -
vector
标签: c++ dictionary vector iterator