gpt4 book ai didi

c++ - 复制 std::map 的子集

转载 作者:太空狗 更新时间:2023-10-29 20:54:27 25 4
gpt4 key购买 nike

我正在尝试以最有效的方式将 std::map 结构的子集复制到新的映射结构。我只能想到像这样的普通解决方案:

// Example program
#include <iostream>
#include <string>
#include <map>

int main()
{
// build map
std::map<int, int> mymap;
size_t num_el = 10;


for(size_t i = 0; i < num_el; ++i)
{
mymap.insert(std::pair<int,int>(i,i));
}

// copy submap
int start_index = 5;
std::map<int,int> output_map;
std::map<int,int>::const_iterator it;

for(it = mymap.find(start_index); it != mymap.end(); ++it)
{
output_map.insert(*it);
}


//print result
std::map<int,int>::const_iterator pit;
for(pit = output_map.begin(); pit != output_map.end(); ++pit)
{
std::cout << pit->second << " , ";
}

std::cout << std::endl;
}

有更好的方法吗?

最佳答案

insert 方法允许你像这样指定一个范围:

auto range_start = mymap.find(5);
auto range_end = mymap.end();

output_map.insert(range_start, range_end);

关于c++ - 复制 std::map 的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080489/

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