C++ 用结构填充 2D 矢量
C++ Filling a 2d Vector with Structs
类似的主题已经涵盖,尽管我从未找到答案。我的代码的相关片段:
struct Neuron
{
double weight;
};
typedef vector<Neuron> Layer;
vector<Layer> n_N; // Hopefully creating a vector of layers, which takes in neuron structs
然后我尝试将神经元结构加载到 for 循环中的n_N中,如下所示:
n_N[i][neuronNum].push_back(Neuron);
在我的理解中,[i] 是行中的数字,然后 [neuronNum] 是列中的数字
但是我收到一个错误:"结构神经元"没有名为"push_back"的成员
您的问题是您正在尝试调用结构中包含的名为 push_back()
的函数。由于您没有名为 push_back()
的成员函数,因此它会给您和错误。这可以通过删除循环中使用的访问说明符中的第二个索引来解决。这将起作用,因为您正在尝试访问Nuerons
的向量,而不是Nuerons
向量的成员。
例如
更改此设置:
n_N[i][neuronNum].push_back(Neuron());
对此:
n_N[i].push_back(Neuron());
编辑:(感谢M.M指出这一点)
上述解决方案仅在 n_n[i] 存在且不在向量范围之外(这将导致未定义的行为)时才有效。为了解决这个问题,我建议使用以下 for 循环之一。
// Range based for loop. (requires c++11 or greater)
for(auto &i: n_N) {i.push_back(Neuron());)
// Standard for loop taking into account the current size of the vector.
for(size_t i = 0; i < n_N.size(); i++) {n_N[i].push_back(Neuron());}
// Iterator for loop.
for(std::vector<std::vector<Neuron> >::iterator it = v.begin(); it != v.end(); ++it) {
n_N[it].push_back(Neuron());
}
相关文章:
- 我是 C++ 的初学者,我想知道如何在 2D 矢量中获取重复值
- 如何在 c++ 中格式化和访问 2D 矢量数组中的数据
- 读取字符串文本输入以创建 2D 矢量
- 识别 2D 矢量C++中的位置
- Cython:无法分配给 2D 矢量
- 按列随机播放 2D 矢量
- 初始化空的 2D 矢量?
- 如何在 2d 矢量 c++ 中复制元素并将其放在原始元素旁边
- 如何访问具有地图的2D矢量?
- 通过功能进行2D矢量输入和显示
- 在C++中将对象添加到 2D 矢量
- 太空入侵者 – 2D 矢量运动算法
- 从 2 个 1D 矢量创建 2D 矢量
- 如何仅使用其中一个维度在 2D 矢量中插入值?
- 在 2D 矢量中获取多个输入时出现问题
- 2D 矢量循环 C++
- C++ 2D 矢量到 2D pybind11 数组
- 在 2D 矢量数组中的特定标头下添加数据
- 在C++中使用 2D 矢量时出现明显的内存泄漏
- 从文本文件中读取一行并将其存储在 C++ 中的 2D 矢量中