c++ for循环外的访问向量
Access vector outside of for-loop C++
我可以显示存储在vector mem中的值(参见编辑后的代码)。我怎样才能在vecc .name中存储值?这是我有问题的语法。具体来说,定义vector .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;
}
根据您的评论和编辑更新:
您第一次在线mem[c].name = itens;
时遇到分段错误,因为您正在尝试访问尚未创建的mem[1]
。为了访问一个向量的元素,你需要将它添加到一个向量中,通常使用push_back
。由于您正在尝试访问向量的第二个元素,因此应该至少事先两次调用push_back
。
你可能还需要在你的算法中做一些额外的修复,但我将把它留给你。
我原来的回答:
您的容器是vector<vec> name
。您可以通过name[n]
访问它的第n个元素。可以通过name[n].mm
mm
成员变量您在代码片段(vec[c].name
)中使用的代码是错误的。
相关文章:
- 特征命名访问向量段
- 在无法访问向量的情况下查找迭代器的末尾
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- 访问向量索引C++
- 如何通过迭代器访问向量中的嵌套对?
- 访问向量并将数据导出到文件
- 通用迭代器可以访问向量的元素,而无需使用模板C
- 如何使用指针访问向量元素的各个元素
- 使用 "find" 访问向量中的值
- 从触摸回调访问向量元素的方法时,不良访问错误
- 访问向量类中的成员变量
- 可以使用整数索引访问向量元素吗?
- 访问向量类成员时出现分段错误
- 从对象创建矢量包装器,该对象只允许使用索引访问向量
- C++ 访问向量动态数组中的违规读取位置0xFFFFFFFFFFFFFFFF
- 如何访问向量内的向量
- 访问向量C 中的分割故障
- 通过操作员[]和.at()访问向量的负索引
- 从DLL访问向量
- 用于访问向量的通用迭代器