关于c++的vector中嵌套map
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int main()
{
int n, m, k;
string str;
vector<map<string, int> > vec;
cin >> n;
for(int i = 0; i < n; ++i) {
cin >> k;
for(int j = 0; j < k; ++j) {
cin >> str;
vec = 1;//引起程序卡死的语句
}
}
cin >> m;
vector<string> s;
for(int i = 0; i < m; ++i) {
cin >> str;
bool flag = false;
for(int j = 0; j < n; ++j) {
if(vec) {
flag = true;
break;
}
}
if(!flag) s.push_back(str);
}
for(int i = 0; i < s.size() - 1; ++i) cout << s << " ";
cout << s << endl;
return 0;
}
上述代码:测试用例为:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888
但是输完第二行程序就因为 vec = 1而卡死,是不能这样用吗,求dalao指点一下 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int n, m, k;
string str;
vector<map<string, int> > vec;
cin >> n;
for(int i = 0; i < n; ++i) {
cin >> k;
for(int j = 0; j < k; ++j) {
cin >> str;
//vec = 1;
vec.push_back(std::map<std::string, int>{{ str, j}});
}
}
cin >> m;
vector<string> s;
for(int i = 0; i < m; ++i) {
cin >> str;
bool flag = false;
for(int j = 0; j < n; ++j) {
if(vec) {
flag = true;
break;
}
}
if(!flag) s.push_back(str);
}
for(int i = 0; i < s.size() - 1; ++i) cout << s << " ";
cout << s << endl;
return 0;
}
页:
[1]