【问题标题】:Adding values to a 3-d vector in c++在 C++ 中向 3-d 向量添加值
【发布时间】:2009-08-17 08:27:56
【问题描述】:

我想使用 3-d 向量在 c++ 中的一些计算之间存储和添加值。 我在将第三维添加到我的向量时遇到问题。 我想要实现的是一个向量,每次迭代都会放入一个二维向量,这里只有每个向量的第一个值...... 所以输入看起来像这样

1 3 7 9
- - - -

然后我想在标有 - 的地方添加值 所以最后矩阵看起来像这样(对于每次迭代)(只显示二维......)

1 3 7 9
2 5   7
3     2
1

现在我无法向其中添加第一个元素。我正在使用 sollist 3-D 向量作为全局向量。 我的 values 数组都有相同数量的 > 0.5 的元素,所以这不是错误所在。

 vector<vector<vector<int>>>sollist;


void sol(array& values, int& iter)
    {int i;
    sollist.push_back ( vector<vector<int>>() );

        for (i=0;i<10;i++)
    if (values[i]>0.5)
    sollist[iter][0].push_back(i);
    }

非常感谢您的帮助和出色的论坛... /巴克斯利

【问题讨论】:

    标签: c++ vector


    【解决方案1】:

    我认为你必须这样做。

    sollist.push_back(vector<vector<int>>());
    sollist[0].push_back(vector<int>());
    sollist[0][0].push_back(value);
    

    【讨论】:

    • 是的,就是这样......谢谢......我看了几个小时后才失明......
    【解决方案2】:

    我真的认为您最好使用现有的矩阵库而不是采用这种方法 - 有很多可供选择,谷歌的“C++ 矩阵库”。如果你必须自己滚动,你绝对应该实现自己的 Matrix 类,而不是乱用裸向量。

    【讨论】:

    • 我不知道我最终的 3-D 数组的大小,因此我认为使用向量会更好......我不知道是不是这样。除了有点混乱之外,我的方法还有其他问题吗?
    • 大多数矩阵库不支持 mrbuxley 想要的。我知道他称之为张量的“3-d 向量”,但张量的通常定义要求它是规则的,而 mrbuxley 希望组成 3-d 向量的 1-d 向量具有不同的长度。可以基于 Matrix 的解决方案,其中 Matrix 来自现有的矩阵库,但是我想知道如果您只需要它的一小部分,为什么要使用现有的库。
    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多