2 回答

TA貢獻1876條經(jīng)驗 獲得超7個贊
STL中容器list的成員函數(shù)merge()
合并兩個有序的list,
你調(diào)用前沒有sort()
先排序。
你應(yīng)該調(diào)用list的splice()函數(shù)
// list::merge
#include <iostream>
#include <list>
// compare only integral part:
bool mycomparison (double first, double second)
{ return ( int(first)<int(second) ); }
int main ()
{
std::list<double> first, second;
first.push_back (3.1);
first.push_back (2.2);
first.push_back (2.9);
second.push_back (3.7);
second.push_back (7.1);
second.push_back (1.4);
first.sort();
second.sort();
first.merge(second);
// (second is now empty)
second.push_back (2.1);
first.merge(second,mycomparison);
std::cout << "first contains:";
for (std::list<double>::iterator it=first.begin(); it!=first.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
Output:
first contains: 1.4 2.2 2.9 2.1 3.1 3.7 7.1

TA貢獻1827條經(jīng)驗 獲得超9個贊
merge有兩個重載方式,只有一個形參的merge需要list的元素自定義了“小于”方法。兩個形參的merge還需要一個額外的可以進行“小于”比較的函數(shù)指針。
可以在Worker類加一個<符重載:
bool operator<(Worker &w)
{
if (age < w.age)
return true;
return false;
}
另外,你這個類設(shè)計得不太好,要盡量少地使用指針和數(shù)組。你可以用string類型代替char[]或者char *
- 2 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報