【发布时间】:2017-08-05 07:34:34
【问题描述】:
为了更熟悉 C++,我开始研究一些代数问题。现在,我创建了一个算法,它根据输入数字生成带有一些约束的数字组合:
void abc(const int n) {
std::vector<int> aOut, bOut, cOut; // creating vectors to store values (dynamic int arrays)
for (int a = 9; a <= n - 2; a++) {
for (int b = a + 1; b <= n - 1; b++) {
for (int c = b + 1; c <= n; c++) {
aOut.push_back(a);
bOut.push_back(b);
cOut.push_back(c);
// std::cout << "a = " << a << " b = " << b << " c = " << c << std::endl;
}
}
}
现在,我需要继续处理这些向量,所以我需要以某种方式返回它们。我试图创建一个大小为:int ABC[N][3] 的 int 数组,其中const int N = cOut.size();。这不起作用,因为 N 不被接受为常数。
我还尝试在生成向量的循环中创建一个计数器,然后将其传输到一个字符串,然后再将其传输到一个常量整数 - 这也不起作用。
我尝试创建一个指向常量 int 的指针,并使用它来更改循环中的常量,但这也不起作用。
我什至找到了一种根据循环计算大小的方法:
const int n = 20;
const int n1 = n - 10; // Manipulating input
const int N = n1*(n1 + 1)*(n1 + 2) / 6; // Size of vectors
然后将值传递给函数:
void abc(const int n, const int N) { // same code as before }
但是没有任何效果。老实说,我没有想法(并且失去理智)。我浏览了论坛和谷歌,但没有运气。如果有人能指出我正确的方向,我将永远感激不尽。
解决方案当然包括将void 更改为返回参数的函数。我添加了 void,因为我想检查这些值是否打印正确。
【问题讨论】:
-
“出口”是什么意思?柜台跟出口有什么关系?循环的大小也与导出无关。请说明您要完成的工作。
-
将它们放入
std::vector并从函数中返回? -
类似这样的东西:
std::vector<std::vector<int>> outs; outs.push_back(aOut); outs.push_back(bOut); outs.push_back(cOut); return outs; -
std::array<std::vector<int>, 3> outArray;是一个包含三个向量的数组。outArray[0]将替换aOut等。 -
@bgaard 你有
#include <array>和#include <vector>吗?
标签: c++ arrays vector integer constants