【问题标题】:Insert and retrieve a matrix in a database在数据库中插入和检索矩阵
【发布时间】:2019-03-06 22:06:25
【问题描述】:

我的班级中有一个std::vector<std::vector<float>> 类型的对象和一个bool 值。 vector的向量内容总是这样的结构(120行4个值,后面跟着50行3个值):

-78.45 5120 45.369 7.456
-0.140 1.012 1.161 7.456
-4.4287 8.963 1.121 7898
-8.753 8.159 3.852 2.415
0.000 2.456 4.655 6.041
0.000 3.132 8.275 1.788
7.489 8.056 7.288 5.698
4.050 7.456 7.340 2.025
0.090 9.478 9.395 6.416
1.132 6.866 8.450 2.126
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
6.222 5.142 7.596 0.56
9.121 2.256 5.641
8.896 1.488 2.858
7.489 8.056 7.288
4.050 7.456 7.340
0.090 9.478 9.395
7.489 8.056 7.288
4.050 7.456 7.340
0.090 9.478 9.395

当我从数据库加载矩阵时,如何存储矩阵以检索相同的vector<std::vector<float>>。我的问题是我不知道当我处于 4 个值或 3 个值的一行时如何“知道”。我最初的想法是使用 boost 存储对象,但我无法添加这个库。我在 C++98 中。由于我不能使用 boost,我认为我应该将值存储在一行中。但是,用 4 个值到 120 个第一行和 3 个值到数据库末尾重建一个 float 向量的向量的算法是什么?

我可以提供示例代码吗?

【问题讨论】:

  • 我的问题是我不知道当我在一行 4 个值或 3 个值时如何“知道”。那事?使用 std::getline() 和 std::stringstream。

标签: c++ database matrix vector blob


【解决方案1】:

我的建议:

  1. 从文件中读取一行文本。如果没有更多的行,你就完成了。
  2. 从文本行构造一个std::istringstream。继续从std::istringstream 读取数字,直到没有更多数字。
  3. std::vector<float> 中收集上述步骤中的所有数字。
  4. 将一行对应的std::vector<float>添加到更高级别的std::vector

我很想发布代码,但我忍住了。 IMO,这将是太多的勺子喂养。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多