У меня есть вектор набора, и я хочу сравнить, чтобы получить пересечение всех этих наборов

#include<iostream>
#include<set>
#include<vector>
#include <algorithm> 
#include <string>
using namespace std;



int main() {

    
    vector<set<string>>data;


    string courses;
    int students = 0, numberOfCourses = 0;
    cin >> students;

    for (int i = 0; i < students; i++) {
        cin >> numberOfCourses;
        set<string>st;
        for (int j = 0; j < numberOfCourses; j++) {
            cin >> courses;
            st.insert(courses);
        }                                                       
        data.push_back(st);
    }



    
    


    
    

}

Я искал, но все ответы о сравнении двух разных векторов я хочу сравнить один и тот же вектор

0
Î DRØĮD 16 Ноя 2022 в 00:49

1 ответ

Кажется, вы хотите знать курсы, на которые записались все студенты.

Когда вы выполняете st.insert(courses);, вы знаете, что данный курс есть у конкретного студента.

Итак, если вы добавите map<string, int> numberOfStudentsInCourse; и

st.insert(courses);
numberOfStudentsInCourse[courses]++;

Затем вам просто нужно проверить в конце, у каких numberOfStudentsInCourse есть член second, равный количеству студентов.

Я не буду писать вам полный код :-).

0
Jeffrey 16 Ноя 2022 в 01:00