#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
段错误 (核心已转储)