我可以显示存储在矢量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;
}
答案 0 :(得分:2)
更新您的评论和修改后的内容:
您第一次上线mem[c].name = itens;
时收到细分错误,因为您尝试访问尚未创建的mem[1]
。要访问矢量元素,您需要将其添加到矢量中,通常使用push_back
。由于您尝试访问向量的第二个元素,因此应事先至少调用push_back
两次。
您可能还需要在算法中做一些额外的修复,但我会留给您。
我原来的回答:
您的容器是vector<vec> name
。
您可以通过name[n]
访问其第n个元素。您可以通过mm
name[n].mm
成员变量
您在代码段(vec[c].name
)中使用的代码是错误的。