C++ 循环C+的外部访问向量+;
我可以显示vector mem中存储的值(参见编辑的代码)。如何将值存储在vec.name中?这是我有问题的语法。专门为vec.name定义容器,并使用push_back在其中存储数据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 &
#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在其中存储数据。