Другие языки программирования и технологии

C++ Как вывести вектор на экран и вообще обращаться к нему?

Вот код. По заданию надо "начислить" стипендию "студентам", но как обращаться к вектору и отдельным его элементам я не знаю.

class Student
{

public:

int ind;
string fam;
int oc[4];
int uch;
int stip=1500;
};

int main()
{
int i, j=0, v=0, p, a;
vector st;
Student temp;

ifstream fi;

fi.open("dannie.txt");

while (fi >> temp.ind)
{
fi >> temp.fam;
for (int i = 0; i < 4; ++i)
fi >> temp.oc[i];
fi >> temp.uch;

st.push_back(temp);
}
for( auto i = 0; i < st.size(); ++i ){
st[ i ].fam....
}

--И. Л. И. ----

for( auto & i : st ){
i.fam....
}
Павел Дерипаскин
Павел Дерипаскин
30 070
Лучший ответ
Евгений Каменев Спасибо, работает.
vector <Student > st;
(Парсер скобки жрёт)
Дима Руднев
Дима Руднев
96 580
#include <iostream>
#include <string>
#include <vector>
#include <tuple>
using namespace std;
class Student {
public:
explicit Student(wstring& name) : name_(name), grant_(0) {}
void grant(const int param) { grant_ = param; }
int grant()const { return grant_; }
void name(const wstring& name) { name_ = name; }
wstring name()const { return name_; }
private:
wstring name_;
int grant_;
};
class Students {
public:
using record_t = tuple<size_t, Student, bool>;
void add(const Student& student) {
auto id = students_.size() + 1U;
students_.emplace_back(record_t(id, student, true));
}
size_t size()const { return students_.size(); }
Student* search(const size_t id) {
if (id <= students_.size()) {
auto&[x, student, show] = students_[id - 1U];
if (show) return &student;
}
return nullptr;
}
private:
vector<record_t> students_;
};
int main() {
wcout.imbue(locale(".866"));
wcin.imbue(locale(".866"));
Students students;
for (auto i = 0U; i < 3U; ++i) {
wcout << i + 1U << L". Ф. И. О.: ";
wstring name;
getline(wcin, name);
Student student(name);
students.add(student);
}
wcout.put(L'\n');
const auto last = students.size();
for (auto id = 1U; id <= last; ++id) {
auto next = students.search(id);
if (next) {
wcout << id << L". " << next->name() << L", стипендия: " << next->grant();
wcout << L"\nНазначить стипендию: ";
int rate;
cin >> rate;
next->grant(rate);
}
}
wcout.put(L'\n');
for (auto id = 1U; id <= last; ++id) {
const auto next = students.search(id);
if (next) {
wcout << id << L". " << next->name() << L", стипендия: " << next->grant() << L'\n';
}
}
wcout.put(L'\n');
system("pause");
}
Евгений Каменев 1)Слишком сложно
2)Ответ уже есть
st[5].fam

Похожие вопросы