gpt4 book ai didi

c++ - 关于 vector 的考虑

转载 作者:行者123 更新时间:2023-11-28 06:48:55 25 4
gpt4 key购买 nike

我有两个 vector :locs_current_all 和 sc_current_peaks_pos(都填充了位置值),一些元素是共同的。在 vector sc_current_peaks_pos 中有我想从 vector sc_current_peaks_pos 中删除的索引。

这是我的代码。

第一种方法:尝试仅在 vector non_short_circuit_current 中复制
locs_current_all 和 sc_current_peaks_pos。

vector<int> non_short_circuits_current;
int j_nsc=0;
for(int i=0;i<=sc_current_peaks_pos.size()-1;i++){

for(int k=j_nsc;k<=locs_current_all.size()-1;k++){
j_nsc++;
if(sc_current_peaks_pos[i]==locs_current_all[k])
non_short_circuits_current.push_back(locs_current_all[k]);

//else break ;

}

}

第二种方法:从 vector locs_current_all 中删除 sc_current_peaks_pos 中的元素。

vector<int> non_short_circuits_current;
std::for_each(std::begin(sc_current_peaks_pos), std::end(sc_current_peaks_pos), [&](int indexOpp){
non_short_circuits_current.erase(locs_current_all [indexOpp]);
});// erase wants more parameters!!!

这两种方法都失败了。预先感谢您的帮助。

最佳答案

如果我正确理解了你的任务,那么尝试类似的事情

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>


int main()
{
const int N = 20;
std::srand( ( unsigned )std::time( 0 ) );

std::vector<int> v1( N );
std::vector<int> v2( N );

std::generate( v1.begin(), v1.end(), [] { return std::rand() % N; } );
std::generate( v2.begin(), v2.end(), [] { return std::rand() % N; } );

for ( int x : v1 ) std::cout << x << ' ';
std::cout << std::endl;

for ( int x : v2 ) std::cout << x << ' ';
std::cout << std::endl;

auto is_present = [&]( int x )
{
return std::find( v2.begin(), v2.end(), x ) != v2.end();
};

v1.erase( std::remove_if( v1.begin(), v1.end(), is_present ), v1.end() );

for ( int x : v1 ) std::cout << x << ' ';
std::cout << std::endl;

for ( int x : v2 ) std::cout << x << ' ';
std::cout << std::endl;

return 0;
}

输出是

15 4 9 9 11 13 14 16 19 5 6 14 11 2 5 0 6 0 9 12 
16 18 5 14 10 1 5 1 19 18 10 15 2 19 4 5 4 10 13 16
9 9 11 6 11 0 6 0 9 12
16 18 5 14 10 1 5 1 19 18 10 15 2 19 4 5 4 10 13 16

编辑:如果 vector 是有序的,那么您可以使用 std::binary_search 而不是 std::find,因为它在我的示例中使用。

关于c++ - 关于 vector 的考虑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com