c++从原数组中截取一部分变为新的数组,一句代码
时间: 2024-03-12 21:44:08 浏览: 170
在 C++ 中,你可以使用 `vector` 的 `assign` 函数来截取原数组的一部分并创建一个新的数组。以下是一句代码的示例:
```cpp
vector<int> new_array(original_array.begin() + start, original_array.begin() + end);
```
其中,`original_array` 是原数组,`start` 是起始索引,`end` 是结束索引(不包含在新数组中)。`begin()` 函数返回 `vector` 的首个元素的迭代器,因此我们可以使用 `begin() + start` 和 `begin() + end` 来指定截取的范围。
希望这个回答能够帮助你!
相关问题
c++中如何截取float*数组中片段,结果也是float*数组
可以使用指针运算和动态内存分配来截取float*数组的片段,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
float* subarray(float* arr, int start, int end) {
int len = end - start + 1;
float* sub = (float*) malloc(len * sizeof(float));
for(int i = 0; i < len; i++) {
sub[i] = *(arr + start + i);
}
return sub;
}
int main() {
float arr[] = {1.1, 2.2, 3.3, 4.4, 5.5};
int start = 1; // 截取的起始位置
int end = 3; // 截取的结束位置
float* sub = subarray(arr, start, end);
for(int i = 0; i < end - start + 1; i++) {
printf("%.1f ", sub[i]);
}
free(sub);
return 0;
}
```
以上代码中,`subarray`函数接受一个`float*`数组和截取起始位置和结束位置的参数,返回一个新的`float*`数组,表示截取后的片段。在函数内部,首先根据起始位置和结束位置计算出截取后的片段长度,然后使用`malloc`函数动态分配内存,创建一个新的`float*`数组。接着使用指针运算和循环遍历原数组,将截取的片段复制到新数组中。最后返回新数组的指针。
在`main`函数中,我们定义了一个`float`数组`arr`,然后调用`subarray`函数截取了`arr`数组的第二个到第四个元素(即`2.2, 3.3, 4.4`),并将结果保存在`sub`数组中。最后遍历`sub`数组并打印出来,然后释放`sub`数组的内存。
阅读全文