cei语言 2019-02-15 09:57 采纳率: 0%
浏览 276

std::list使用std::set_union 进行求并集,编译运行后得到的结果是 std::list::size()值很大

#include
#include
#include

void dump_char_list(const std::list &char_list)
{
std::list::const_iterator it;
for (it = char_list.cbegin(); it != char_list.cend(); ++it)
{
std::cout << **it << " ";
}
std::cout << "\n";
}

int main()
{
char i = 'a';
std::list char_list;
std::list char_sub_list;

for (i='a'; i<='z';++i)
{
    char_list.push_back(new char(i));
}
dump_char_list(char_list);

{ 
    //先排序
    char_list.sort();
    std::list<char*>::iterator sub1_begin = char_list.begin();
    std::list<char*>::iterator sub1_end   = char_list.begin();
    std::list<char*>::iterator sub2_begin = char_list.begin();
    std::list<char*>::iterator sub2_end   = char_list.begin();
    std::list<char*>::iterator result     = char_sub_list.begin();

    std::advance(sub1_end, 5);
    std::advance(sub2_begin, 10);
    std::advance(sub2_end, 15);

    std::cout << distance(char_list.begin(), sub1_begin) << std::endl;
    std::cout << distance(char_list.begin(), sub1_end) << std::endl;
    std::cout << distance(char_list.begin(), sub2_begin) << std::endl;
    std::cout << distance(char_list.begin(), sub2_end) << std::endl;

    std::cout << **sub1_begin << std::endl;
    std::cout << **sub1_end   << std::endl;
    std::cout << **sub2_begin << std::endl;
    std::cout << **sub2_end   << std::endl;

    char_sub_list.resize(100);
    std::cout << char_sub_list.size() << std::endl;

    std::list<char*>::iterator it = set_union(sub1_begin, sub1_end, sub2_begin, sub2_end, result);

    std::cout << char_sub_list.size() << std::endl;
    std::cout << distance(result, it) << std::endl;

    char_sub_list.resize(distance(result, it));
    std::cout << char_sub_list.size() << std::endl;

    dump_char_list(char_sub_list);
}

}


运行后结果:
a b c d e f g h i j k l m n o p q r s t u v w x y z
0
5
10
15
a
f
k
p
100
93940325363312
10
93940325363222
段错误 (核心已转储)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 23:49
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题