C++ 在C+;中是否有其他方法填充数组+;无载体
所以我有数组A和B,其中两个包含随机数,我需要在C数组中先写A和B的偶数,然后写奇数。我已经创建了这个wtih向量,但是我想知道是否有其他方法可以像在Javascript中一样实现它,有一些方法像.unshift(),.push()等等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
#包括
#包括
使用名称空间std;
int main(){
常数int n=4;
int A[n];
int B[n];
向量;
对于(int i=0;i coutvector::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] << " ";
}