У меня есть вектор набора, и я хочу сравнить, чтобы получить пересечение всех этих наборов
#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);
}
}
Я искал, но все ответы о сравнении двух разных векторов я хочу сравнить один и тот же вектор
1 ответ
Кажется, вы хотите знать курсы, на которые записались все студенты.
Когда вы выполняете st.insert(courses);
, вы знаете, что данный курс есть у конкретного студента.
Итак, если вы добавите map<string, int> numberOfStudentsInCourse;
и
st.insert(courses);
numberOfStudentsInCourse[courses]++;
Затем вам просто нужно проверить в конце, у каких numberOfStudentsInCourse
есть член second
, равный количеству студентов.
Я не буду писать вам полный код :-).
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.