std::vector<int16_t> extracted_data[i](deal_vector[i].begin(), deal_vector[i].begin() + insert_size); 可以这么使用吗?
时间: 2024-09-13 17:11:16 浏览: 46
f-teain.rar_Data mining_large data matlab_predictions
这个C++代码片段看起来是在处理一个动态数组或者向量`std::vector<int16_t>`,其中`extracted_data`是一个大小为`i`的一维整数向量数组,而`deal_vector`也是一个同样类型的向量容器。
`deal_vector[i]`表示取第`i`个元素对应的`std::vector`,然后通过`.begin()`和`.end()`成员函数获取该范围内的迭代器。`deal_vector[i].begin()`返回第一个元素的迭代器,`deal_vector[i].begin() + insert_size`则是从第一个元素开始算起插入大小为`insert_size`元素的结束位置。
但是,这段代码有个小错误:如果直接使用`deal_vector[i].begin()`作为`extracted_data[i]`的构造参数,它不会创建一个新的子向量,而是尝试将整个`deal_vector[i]`赋值给`extracted_data[i][0]`。如果你想提取并复制一定长度的数据到`extracted_data[i]`,应该创建一个新的子区间:
```cpp
extracted_data[i] = deal_vector[i].substr(0, insert_size);
```
或者
```cpp
extracted_data[i].resize(insert_size);
extracted_data[i].assign(deal_vector[i].begin(), deal_vector[i].begin() + insert_size);
```
这样可以确保只复制指定长度的数据,并创建了一个新的`std::vector<int16_t>`。
阅读全文