c++ - 如何通过 C++ 将一个数组重新制作成两个更小的数组?
问题描述
我需要从一个 10 元素数组中创建两个 5 元素数组。我做了这样的代码
#include <iostream>
using namespace std;
int main() {
const int size1 = 10, size2 = 5;
int array[size1]{ 1,3,6,2,82,10,6,34,2,5 }, arb[size2]{}, arc[size2]{};
for (size_t i = 0; i < 5; i++)
{
arb[i] = array[i];
}
for (size_t i = 5; i < 9; i++) {
for (size_t e = 0; e < 4; e++)
{
arc[e] = array[i];
}
}
for (size_t i = 0; i < 5; i++)
{
cout << arb[i] << "\t";
}
cout << endl;
for (size_t i = 0; i < 5; i++)
{
cout << arc[i] << "\t";
}
}
但第二个数组给出“2 2 2 2 0”。我不知道如何解决这个问题。
解决方案
除非您有特定的理由认为这些必须是数组(这非常罕见,至少在我的经验中是这样),否则我会使用std::vector
s 来代替。这使得用较大的正确部分初始化较小的“数组”变得微不足道:
std::vector<int> array { 1,3,6,2,82,10,6,34,2,5 };
std::vector<int> arb { array.begin(), array.begin() + size2};
std::vector<int> arc { array.begin() + size2, array.end() };
这也使得(例如)将主数组分成两半变得容易,而不管它的确切大小:
std::vector<int> array { 1,3,6,2,82,10,6,34,2,5, 12, 17, 92, 101, -3 };
auto half = array.size() / 2;
std::vector<int> arb { array.begin(), array.begin() + half};
std::vector<int> arc { array.begin() + half, array.end() };
[就目前而言,如果主数组有奇数个元素,这将使后半部分更大,但如果这不是您想要的,您可以更改计算half
以满足您的需要。]
推荐阅读
- python - 如何使用 Python 执行外部应用程序?
- wordpress - 高级域 - 为什么我不能转移高级域
- azure-devops - 将 keyvault 变量传递到阶段模板 azure devops 管道
- null - 如何在水晶报表中显示带有空白字段的记录
- javascript - ViewChildren 中的 Angular 滚动 2 个不同的滚动条
- c++ - C ++检查是txt文件中浮点数组中的任何字符
- kubernetes - 如何跳过来自 ValidatingWebhook 的 Kubernetes 控制器请求
- stm32 - 需要明确 MLX90614 红外传感器的睡眠模式
- apache-kafka - Clickhouse物化视图未触发
- javascript - 如何从角度的 post 方法更新字段?