Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 循环C+的外部访问向量+;_C++_For Loop_Vector_Struct_Disp - Fatal编程技术网

C++ 循环C+的外部访问向量+;

C++ 循环C+的外部访问向量+;,c++,for-loop,vector,struct,disp,C++,For Loop,Vector,Struct,Disp,我可以显示vector mem中存储的值(参见编辑的代码)。如何将值存储在vec.name中?这是我有问题的语法。专门为vec.name定义容器,并使用push_back在其中存储数据 #include <vector> #include <iostream> #include <fstream> #include <cmath> #include <cstdlib> #include &

我可以显示vector mem中存储的值(参见编辑的代码)。如何将值存储在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;

    }
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
//结构向量{
//int名称;
//};
//载体膜;
载体膜;
尺寸:nx,ny,nz;
无效读取(常量字符*名称)
{
ifstream文件(名称);
cout>Ny>>Nz;
int c=0;
尺寸;
对于(size_t z=0;z>ITEN;
//mem[c].name=itens;
成员推回(itens);
}
}       
}
}
int main()
{
读取(“names.txt”);
对于(int i=0;i在您的评论和编辑后更新:

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

你可能还需要在你的算法中做一些额外的修正,但我将把它留给你


我原来的答覆是:

您的容器是
向量名
。 您可以通过
name[n]
访问其第n个元素。您可以通过
name[n]访问第n个元素的
mm
成员变量。mm


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

能否显示代码段以及所引用的循环、向量和结构?此外,您是否尝试过在调试程序中单步执行代码以在运行时查看向量的值?可能是
vec[0].name
?好的,刚刚添加了代码。谢谢。嗨,Igor-我在这里复制代码时确实犯了一个错误。我在编辑代码片段时考虑了您提到的更正。我在运行代码时立即遇到了一个分段错误。我知道这意味着什么,但不明白我的代码有什么问题以及如何修复它。希望c李尔斯:我现在的问题是:为什么分割错误和如何修复它。请在我刚开始学习C++时耐心等待。谢谢你的耐心。谢谢,这帮助了。我可以显示存储在向量MEM中的值(见编辑代码)。。如何将值存储在vec.name中?这是我遇到的语法问题。特别是为vec.name定义容器,并使用push_back在其中存储数据。