c++ - 将多个 vector 转换为数组,或返回它们 (c++)

标签 c++ arrays vector integer constants

为了更加熟悉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 :).

您可以使用 classstruct 将 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/

相关文章:

c++ - sscanf 对于这种类型的字符串

c++ - "const references"不应该实际称为 "references to const"吗?

c++ - 让 freeglut 库与 opengl 一起工作

Javascript - 字节数组长?

r - 在向量值之间生成一系列数字

c++ - 尝试从 vector 中获取 unique_ptr 元素后出错

c++ - 为什么我的线程有时会出现 "stutter"?

java - 如何在声明java中初始化一个点数组

Python 检查数组中元素的值

c++ - 包含多态对象的 vector : static assertion error