Я могу показать значения, хранящиеся в векторной памяти (см. Отредактированный код). Как я могу сохранить значения в vec.name? Это синтаксис, с которым у меня проблемы. Специально определяя контейнер для vec.name, а также сохраняя в нем данные, используя push_back.
#include <vector>
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <set>
using namespace std;
//struct vec {
// int name;
//};
//vector<vec> mem;
vector<int> mem;
size_t nx, ny, nz;
void read(const char * name)
{
ifstream file(name);
cout << "read file " << name << endl;
size_t Nx, Ny, Nz;
file >> Nx >> Ny >> Nz;
int c=0;
size_t itens;
for (size_t z = 0 ; z < Nz ; ++z) {
for (size_t y = 0 ; y < Ny ; ++y) {
for (size_t x = 0 ; x < Nx ; ++x) {
c=c+1;
file >> itens;
//mem[c].name = itens;
mem.push_back(itens);
}
}
}
}int main ()
{
read("names.txt");
for(int i=0;i<26;i++){
cout << mem[i] <<endl;
}
cout << "Computation done." << endl;
return 0;
}
Обновите после вашего комментария и вашего редактирования:
Вы получаете ошибку сегментации в первый раз, когда вы находитесь на линии mem[c].name = itens;
потому что вы пытаетесь получить доступ mem[1]
который вы не создали. Чтобы получить доступ к элементу вектора, вам нужно добавить его в вектор, обычно используя push_back
. Поскольку вы пытаетесь получить доступ ко второму элементу вектора, вы должны вызвать push_back
по крайней мере, дважды, заранее.
Вам, вероятно, также необходимо внести некоторые исправления в свой алгоритм, но я оставлю это вам.
Мой оригинальный ответ:
Ваш контейнер vector<vec> name
,
Вы можете получить доступ к его n-му элементу name[n]
, Вы можете получить доступ к n-му элементу mm
переменная-член name[n].mm
Код, который вы используете в своем фрагменте (vec[c].name
) неправильно.