gpt4 book ai didi

c++ - 将 vector 中的数字放到 vector> 中,两个数字的差值为 1

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:50:41 25 4
gpt4 key购买 nike

我对这个代码片段有疑问,我无法意识到我做错了什么。

错误输出是这样的:

/storage/emulated/0/Documents/feladat.cpp:18:7: warning: expression result unused [-Wunused-value]
b[i, j] = b[a[i + 1], a[i]];
^
/storage/emulated/0/Documents/feladat.cpp:19:9: error: invalid operands to binary expression ('std::__ndk1::ostream' (aka 'basic_ostream<char>') and 'vector<vector<int> >')
cout<<b;
~~~~^ ~
/data/data/ru.iiec.cxxdroid/files/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../include/c++/4.9.x/ostream:218:20: note: candidate function not viable: no known conversion from 'vector<vector<int> >' to 'const void *' for 1st argument; take the address of the argument with &
basic_ostream& operator<<(const void* __p);

它继续在 ()s 中使用不同的类型

如果两个数的差是1,这将是一个将对放入b vector 的程序。这是我的代码:

#include <iostream>
#include <vector>

using namespace std;
int main()
{
vector<int> a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
vector<vector<int>> b;
b.reserve(10);
int i = 0;
int j = 1;
for (i < a.size(); i++;)
{
for (j <= a.size(); j++;)
{
if (a[i + 1] - a[i] == 1)
{
b[i, j] = b[a[i + 1], a[i]];
cout << b;
}
}
}
return 0;
}

最佳答案

你在给定的代码片段中有 4 个问题:

  1. 这不是索引二维数组的方式:b[i, j] .您通过 b[i][j] 对其进行索引.否则,您使用的是 comma operator计算单个索引( b[i, j] 相当于 b[j] )。
  2. for循环的形式为 for (initialization;comparison;increment) .有些部分可以为空,但分号必须存在。因此 for (i < a.size(); i++;)应该是 for (;i < a.size(); i++;) ,或者,或者 for (int i = 0; i < a.size(); i++;) . j 相同循环。
  3. 由于 b 的索引(可能未分配)空间导致的未定义行为.如果你想为每个 vector 创建 10 个元素,那么你可以使用 operator[] , 考虑通过 vector<vector<int>> b (10, vector<int> (10)); 分配所有这些元素(或者,或者,( vector<vector<int>> b (a.size (), vector<int> (a.size ())); )而不是使用 reservereserve 应该被用来防止由于多个 push_back s 而导致的多次重新分配。

    注意,这样的改变会使循环for (;j <= a.size(); j++;)索引 vector 的无效范围,因为它遍历 [1, 10] 的值,而 vector 将包含 [0, 9] 的有效索引.您可以更改循环条件或索引(例如:b[i][j-1] = b[a[i + 1]-1][a[i]-1];)。

  4. std::vector没有 operator<< ,可用于打印,已定义。您需要决定如何使用 vector打印,然后定义实现打印的函数。

关于c++ - 将 vector 中的数字放到 vector<vector>> 中,两个数字的差值为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com