御笔剑客 发表于 2019-3-8 16:44:40

关于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指点一下

人造人 发表于 2019-3-8 17:17:08

#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]
查看完整版本: 关于c++的vector中嵌套map