-4

我可以显示存储在向量内存中的值(请参阅编辑的代码)。如何将值存储在 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;

    }
4

1 回答 1

2

在您的评论和您的编辑之后更新:

您第一次上线时遇到分段错误,mem[c].name = itens;因为您正在尝试访问mem[1]您尚未创建的内容。为了访问向量的元素,您需要将其添加到向量中,通常使用push_back. 由于您正在尝试访问向量的第二个元素,因此您应该push_back至少提前调用两次。

您可能还需要在您的算法中做一些额外的修复,但我会留给您。


我原来的答案:

你的容器是vector<vec> name. 您可以通过 访问其第 n 个元素name[n]。您可以通过以下方式访问第 n 个元素的mm成员变量name[n].mm

您在代码段 ( vec[c].name) 中使用的代码是错误的。

于 2015-07-08T14:19:31.473 回答