Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+;中是否有其他方法填充数组+;无载体_C++_C++17 - Fatal编程技术网

C++ 在C+;中是否有其他方法填充数组+;无载体

C++ 在C+;中是否有其他方法填充数组+;无载体,c++,c++17,C++,C++17,所以我有数组A和B,其中两个包含随机数,我需要在C数组中先写A和B的偶数,然后写奇数。我已经创建了这个wtih向量,但是我想知道是否有其他方法可以像在Javascript中一样实现它,有一些方法像.unshift(),.push()等等 #包括 #包括 使用名称空间std; int main(){ 常数int n=4; int A[n]; int B[n]; 向量; 对于(int i=0;i,推< /Cord>,其他人这样做:猜猜什么?它们在C++中运行所谓的代码。C++中的JavaScript

所以我有数组A和B,其中两个包含随机数,我需要在C数组中先写A和B的偶数,然后写奇数。我已经创建了这个wtih向量,但是我想知道是否有其他方法可以像在Javascript中一样实现它,有一些方法像.unshift(),.push()等等

#包括
#包括
使用名称空间std;
int main(){
常数int n=4;
int A[n];
int B[n];
向量;
对于(int i=0;icout
vector::push_back
是一种最简单的方法,它可以让集合随着添加内容而增长


由于A和B的大小是固定的,您可以将它们改为基本数组,这就是您所做的。但是对于C,您不知道它将持续多长时间,因此具有可变大小的集合是合适的。

如果您知道编译时需要的大小,您可以使用
std::array
。然后可以使用迭代器添加

#include<vector>
using namespace std;

int main() {
    const int n = 4;
    int A[n];
    int B[n];
    std::array<int, n+n>C;  // <-- here
    auto C_it = C.begin();  // <-- here

    for (int i = 0; i < n; i++)
    {
        A[i] = rand() % 10;
        cout << A[i] << " ";
    }
    cout << endl;
    for (int i = 0; i < n; i++)
    {
        B[i] = rand() % 30;
        cout << B[i] << " ";
    }
    for (int i = 0; i < n; i += 1)
    {
        if (A[i] % 2 == 0)
        {
            *C_it++ = A[i]; // <-- here
        }
        if (B[i] % 2 == 0)
        {
            *C_it++ = B[i];
        }
    }
    for (int i = 0; i < n; i++)
    {
        if (A[i] % 2 != 0)
        {
            *C_it++ = A[i];
        }
        if (B[i] % 2 != 0)
        {
            *C_it++ = B[i];
        }
    }
    cout << endl;
    for (int i = 0; i < C.size(); i++)
        cout << C[i] << " ";
}
#包括
使用名称空间std;
int main(){
常数int n=4;
int A[n];
int B[n];

std::arrayC;//我建议首先交错
A
B

for (int i = 0; i < n; i += 1)
{
    C.push_back(A[i]);
    C.push_back(B[i]);
}

嗯,你不需要改变太多

首先,将C数组声明为
intc[n+n];
并将通过C数组递增的变量声明为
intj=0;

在循环的if语句中,第一个if语句执行
C[j]=A[i];j++;
,第二个if语句执行
C[j]=B[i];j++;

int main() {
    const int n = 4;
    int A[n];
    int B[n];
    int C[n+n];
    int j=0;
    for (int i = 0; i < n; i++)
    {
        A[i] = rand() % 10;
        cout << A[i] << " ";
    }
    cout << endl;
    for (int i = 0; i < n; i++)
    {
        B[i] = rand() % 30;
        cout << B[i] << " ";
    }
    for (int i = 0; i < n; i += 1)
    {
        if (A[i] % 2 == 0)
        {
            C[j]=A[i];
            j++;
        }
        if(B[i]%2==0){
            C[j]=B[i];
            j++;
        }
        
    }
    for (int i = 0; i < n; i++)
    {
        if (A[i] % 2 != 0)
        {
            C[j]=A[i];
            j++;
        }
        if (B[i] % 2 != 0)
        {
            C[j]=B[i];
            j++;
        }
    }
    j=0;
    cout << endl;
    for (int i = 0; i < C[].lenght(); i++)
        cout << C[i] << " ";
}
intmain(){
常数int n=4;
int A[n];
int B[n];
int C[n+n];
int j=0;
对于(int i=0;i那些JavaScript函数,比如“代码>未移位< /代码>,<代码>推< /Cord>,其他人这样做:猜猜什么?它们在C++中运行所谓的代码<代码::向量< /代码>。C++中的JavaScript称为“数组”,它被称为“向量”。JavaScript不是C++。C++不是JavaScript。没有法律要求所有编程语言使用相同的名称来代替等价的概念。你可以查看“代码审查”栈交换,也可以对代码和技术进行更为关键的反馈。例如,使用范围,不要说“使用命名空间”。,使用标准算法,而不是编写显式循环,…再次使用STL智慧。
std::stable_partition(C.begin(), C.end(), [](int i) { return i % 2 == 0; });
int main() {
    const int n = 4;
    int A[n];
    int B[n];
    int C[n+n];
    int j=0;
    for (int i = 0; i < n; i++)
    {
        A[i] = rand() % 10;
        cout << A[i] << " ";
    }
    cout << endl;
    for (int i = 0; i < n; i++)
    {
        B[i] = rand() % 30;
        cout << B[i] << " ";
    }
    for (int i = 0; i < n; i += 1)
    {
        if (A[i] % 2 == 0)
        {
            C[j]=A[i];
            j++;
        }
        if(B[i]%2==0){
            C[j]=B[i];
            j++;
        }
        
    }
    for (int i = 0; i < n; i++)
    {
        if (A[i] % 2 != 0)
        {
            C[j]=A[i];
            j++;
        }
        if (B[i] % 2 != 0)
        {
            C[j]=B[i];
            j++;
        }
    }
    j=0;
    cout << endl;
    for (int i = 0; i < C[].lenght(); i++)
        cout << C[i] << " ";
}