在for循环C ++之外访问向量[关闭]

Posted

技术标签:

【中文标题】在for循环C ++之外访问向量[关闭]【英文标题】:Access vector outside of for-loop C++ [closed] 【发布时间】:2015-07-08 13:50:59 【问题描述】:

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

    

【问题讨论】:

你能用你所指的循环、向量和结构显示代码的sn-p吗?另外,您是否尝试过在调试器中单步执行代码以查看运行时向量的值? 可能是vec[0].name? 好的,刚刚添加了代码。谢谢。 【参考方案1】:

根据您的评论和编辑进行更新:

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

您可能还需要对算法进行一些额外的修复,但我会留给您。


我原来的答案:

您的容器是vector&lt;vec&gt; name。 您可以通过name[n] 访问它的第 n 个元素。你可以通过name[n].mm访问第n个元素的mm成员变量

您在 sn-p (vec[c].name) 中使用的代码错误。

【讨论】:

嗨,Igor - 实际上我在这里复制代码时犯了一个错误。我已经根据您提到的更正编辑了 sn-p。运行代码时,我立即遇到分段错误。我知道这意味着什么,但不明白我的代码有什么问题以及如何修复它。希望这能解决我现在的问题:为什么会出现分段错误以及如何解决它。请多多包涵,因为我刚刚开始学习 C++。感谢您的耐心等待。 谢谢,有帮助。我可以显示存储在向量内存中的值(请参阅编辑的代码)。如何将值存储在 vec.name 中?这是我有问题的语法。专门为 vec.name 定义容器,并使用 push_back 在其中存储数据。

以上是关于在for循环C ++之外访问向量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

来自 for 循环的分段错误

如何访问for循环外的值

如果全局不起作用,在Python中访问for循环之外的变量?

为什么int和而不是unsigned int用于C和C ++ for循环?

如何在 if 语句和 for 循环之外获取数组

无法访问 for 循环外的数组元素