正在复制C++中数组中的奇数值元素
Copying odd-value elements from array in C++
我有以下代码:
int copyOddOnly(int *dest, int *src, int n) {
int copyList = 0;
for(int i = 0; i < n; i++) {
if(src[i]%2!=0) {
dest[i]=src[i];
copyList = copyList + 1;
}
}
return copyList;
}
这意味着从数组src中获取所有具有奇数值的元素,并将它们复制到数组dest中。n是要从src复制到dest的元素数。它通过了除以下两项之外的大多数测试:
int a[10] = {0};
ASSERT_EQUALS(3,copyOddOnly(a,descending,5));
ASSERT_EQUALS( "{5,4,3,2,1}",arrayToString(descending,5));
ASSERT_EQUALS( "{5,3,1}",arrayToString(a,3));
ASSERT_EQUALS(5,copyOddOnly(a,mix2,10));
ASSERT_EQUALS( "{-42,12,-9,56,123,32767,48,12,-43,-43}",arrayToString(mix2,10));
ASSERT_EQUALS( "{-9,123,32767,-43,-43}",arrayToString(a,5));
不是从arrayToString(a,3)复制{5,3,1},而是复制{5,0,3}。不是从arrayToString(a,5)中复制{912332767,-43,-43},而是复制{5,0,-9,023}。
当我写它的时候,我的第一反应是让它返回n,但由于某种原因,这让它在更多的测试中失败了。我有一种感觉,我没有得到一些基本的东西,我不知道是什么。如有任何帮助,我们将不胜感激。
而不是
dest[i]=src[i];
你可能想拥有
dest[copyList]=src[i];
当它只在奇数元素之间复制时,它只保留dest
中与src
的偶数元素相对应的元素。如果CCD_ 4是4,则最初在例如CCD_。
您需要跟踪沿着dest
在循环中的距离。这将等效于函数中的copyList
:
int copyOddOnly(int *dest, int *src, int n) {
int j = 0;
for (int i = 0; i < n; i++) {
if (src[i]%2 != 0) {
dest[j] = src[i];
j = j + 1;
}
}
return j;
}
首先要考虑的是,在C++的头<algorithm>
中声明了标准算法std::copy_if
。您的函数可能如下所示。
#include <algorithm>
//...
int copyOddOnly( int *dest, const int *src, int n )
{
auto last = std::copy_if( src, src + n, dest,
[]( int x ) { return x % 2; } );
return last - dest;
}
如果你可能不使用标准算法,那么该功能可能看起来像
int copyOddOnly( int *dest, const int *src, int n )
{
int k = 0;
if ( !( n < 0 ) )
{
for ( int i = 0; i < n; i++ )
{
if ( src[i] % 2 != 0 ) dest[k++] = src[i];
}
}
return k;
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 如何将元素添加到数组的线程安全函数?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输出没有重复元素的动态数组(收缩数组)C++
- 数组中最大的非重复元素
- 数组元素打印的递归方法
- 对字符数组中的元素执行逐位操作
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 通过交换元素使数组相同
- 按平均值替换数组中的元素
- 打印矢量数组中的所有元素
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何将元素从向量转移到新数组?
- 如何在向量数组中插入元素?
- 为什么 2 个相同数组的元素彼此相等
- C++ 中的二维整数数组,每行中的元素数量不均匀