将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
Put numbers from vector to vector<vector>> if two number's difference is 1
我对这个代码片段有问题,我无法意识到我做错了什么。
错误输出如下所示:
/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);
它继续在 (( 中的不同类型
这将是一个程序,如果两个数字的差1
,则使对进入b
向量。 这是我的代码:
#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 个问题:
- 这不是您为 2D 数组编制索引的方式:
b[i, j]
.您按b[i][j]
索引它。否则,您将使用逗号运算符来计算单个索引(b[i, j]
等效于b[j]
(。 for
循环的形式是for (initialization;comparison;increment)
。某些部分可以为空,但分号必须存在。因此,for (i < a.size(); i++;)
应该是for (;i < a.size(); i++;)
的,或者,或者for (int i = 0; i < a.size(); i++;)
。循环也是如此j
。-
由于索引(可能未分配(空间而导致的未定义行为
b
.如果你想为每个向量创建 10 个元素,所以你可以使用operator[]
,考虑通过vector<vector<int>> b (10, vector<int> (10));
分配所有这些元素(或者,或者 (vector<vector<int>> b (a.size (), vector<int> (a.size ()));
( 而不是使用reserve
。 应使用reserve
来防止由于多个push_back
而多次重新分配。注意,这种变化会使循环
for (;j <= a.size(); j++;)
索引向量的范围无效,因为它会经过[1, 10]
的值,而向量将包含有效的索引[0, 9]
。您可以更改循环条件或索引(例如:b[i][j-1] = b[a[i + 1]-1][a[i]-1];
(。 可用于打印的
operator<<
。您需要决定如何打印vector
,然后定义实现此类打印的函数。
std::vector
没有定义相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- EASTL矢量<向量<int>>连续的
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据