C++ remove
时间: 2023-08-30 21:05:05 浏览: 168
C++中的remove函数是用来从容器中移除指定元素的函数。它并不会真正删除元素,而是通过将其他元素向前移动来覆盖它们。remove函数返回一个迭代器,指向通过移除操作得到的新序列的尾部。可以使用这个迭代器作为被删除序列的开始迭代器来调用容器的成员函数erase()来实际删除元素。例如,可以按照以下方式使用remove函数来移除容器中的0元素:
std::deque<double> samples {1.5, 2.6, 0.0, 3.1, 0.0, 0.0, 4.1, 0.0, 6.7, 0.0};
samples.erase(std::remove(std::begin(samples), std::end(samples), 0.0), std::end(samples));
上述代码会将0元素从samples容器中移除,并且保持原始序列的顺序不变。最后,可以使用copy函数将结果打印出来。
std::copy(std::begin(samples), std::end(samples), std::ostream_iterator<double>{std::cout, " "});
std::cout << std::endl;
执行上述代码会输出移除0元素之后的结果:1.5 2.6 3.1 4.1 6.7。
如果希望保留原始序列并生成一个移除指定元素之后的副本,可以使用remove_copy函数。例如:
std::deque<double> samples {1.5, 2.6, 0.0, 3.1, 0.0, 0.0, 4.1, 0.0, 6.7, 0.0};
std::vector<double> edited_samples;
std::remove_copy(std::begin(samples), std::end(samples), std::back_inserter(edited_samples), 0.0);
上述代码会将samples中的0元素移除,并将移除后的结果存储在edited_samples中。
总结来说,remove函数是用来移除容器中指定元素的函数,但它并不会真正删除元素,而是通过移动其他元素来覆盖它们。要实际删除元素,可以配合使用erase函数。如果希望保留原始序列并生成移除指定元素之后的副本,可以使用remove_copy函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [C++ remove、remove_copy、remove_if和remove_copy_if函数使用详解](https://blog.csdn.net/digitalkee/article/details/112447321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [C++中remove()函数总结](https://blog.csdn.net/cnd2449294059/article/details/75948661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文