Вектор доступа вне цикла for C++

Я могу показать значения, хранящиеся в векторной памяти (см. Отредактированный код). Как я могу сохранить значения в 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;

    }

1 ответ

Обновите после вашего комментария и вашего редактирования:

Вы получаете ошибку сегментации в первый раз, когда вы находитесь на линии mem[c].name = itens; потому что вы пытаетесь получить доступ mem[1] который вы не создали. Чтобы получить доступ к элементу вектора, вам нужно добавить его в вектор, обычно используя push_back, Поскольку вы пытаетесь получить доступ ко второму элементу вектора, вы должны вызвать push_back по крайней мере, дважды, заранее.

Вам, вероятно, также необходимо внести некоторые исправления в свой алгоритм, но я оставлю это вам.


Мой оригинальный ответ:

Ваш контейнер vector<vec> name, Вы можете получить доступ к его n-му элементу name[n], Вы можете получить доступ к n-му элементу mm переменная-член name[n].mm

Код, который вы используете в своем фрагменте (vec[c].name) неправильно.

Другие вопросы по тегам