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 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀