为了更加熟悉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;
}
}
}
现在,我需要继续使用这些 vector ,所以我需要以某种方式返回它们。我尝试创建一个大小为 int 的数组:int ABC[N][3]
,其中 const int N = cOut.size();
。这是行不通的,因为 N 不被接受为常数。
我还尝试在生成 vector 的循环中创建一个计数器,然后将其转换为一个字符串,然后将其转换为一个常量整数 - 这也不起作用。
我尝试创建一个指向常量 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,因为我想检查值是否打印正确。
最佳答案
如何创建一个元素(容器)将您的 3 个 vector 封装为返回元素?
The problem you're having is that functions (like Mathemematicians want to) return one value, but this can be any value :).
您可以使用 class 或 struct 将 vector 作为属性:
struct returnElement { // choose an adequate name
std::vector<int> aOut, bOut, cOut;
};
现在您的 abc 函数将返回 returnElement 结构
。它可能看起来像这样:
returnElement abc (const int n) {
returnElement ret; // 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++) {
ret.aOut.push_back(a);
ret.bOut.push_back(b);
ret.cOut.push_back(c);
}
}
return ret;
}
关于c++ - 将多个 vector 转换为数组,或返回它们 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794915/