我想根据一些标准对物体进行排序(根据物品的大小) 我在multiset中的funcSort减慢了计算速度并使解决方案无法扩展。我怎样才能让它更快? 为了避免这种情况,我尝试使用vector,对它进行排序(应该更快?)并将其更改为multiset。然而,我的解决方案不起作用,我不确定我做错了什么?
函数参数:
void deliver(const std::set<MyItem::Ptr> items, MyItem::Ptr item)
(shared_ptr的Typedef):
typedef boost::shared_ptr<MyItem> Ptr;
排序功能:
auto funcSort = [item](MyItem::Ptr lhs, MyItem::Ptr rhs){
return lhs->howFar(item->howBig()) < rhs->howFar(item->howBig());
};
使用multiset的原始版本(使用funcSort时为SLOW):
std::multiset<MyItem::Ptr, decltype(funcSort)> sortedItems(funcSort);
for (MyItem::Ptr item : items){
sortedItems.insert(item);
}
我的矢量尝试(错误消息):
std::vector<MyItem::Ptr> sortedItems;
for (MyItem::Ptr item : items)
{
sortedItems.push_back(item);
}
std::sort(sortedItems.begin(), sortedItems.end(), funcSort());
std::multiset<MyItem::Ptr> ms(sortedItems.begin(), sortedItems.end());
错误讯息:
__lambda1
auto funcSort = [item](MyItem::Ptr lhs, MyItem::Ptr rhs)
candidate expects 2 arguments, 0 provided
答案 0 :(得分:2)
你的排序电话错了。您只想传递function ExcelReport() {
var tab_text = "<table border='2px'><tr border='1px'>";
var tabcol = [];
var j = 0;
var i=0;
var temp;
tab = document.getElementById('myTable'); // id of table
var col = tab.rows[1].cells.length;
tab_text = tab_text + tab.rows[0].innerHTML + "</tr><tr>"; // table title row[0]
for (j = 1; j < tab.rows.length; j++) {
for(i=0;i<col;i++){
if(j==1){ // table header row[1]
tabcol = tabcol + "<td bgcolor='#C6D7EC'>" + tab.rows[j].cells[i].innerHTML + "</td>";
}else{
tabcol = tabcol + "<td>" + tab.rows[j].cells[i].innerHTML + "</td>";
}
}
if(j==1){
temp = tabcol + "</tr>";
}else{
temp = temp + tabcol + "</tr>";
}
tabcol = [];
}
tab_text = tab_text + temp + "</table>";
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer
{
txtArea1.document.open("txt/html", "replace");
txtArea1.document.write(tab_text);
txtArea1.document.close();
txtArea1.focus();
sa = txtArea1.document.execCommand("saveAs", true,"MyExcelReport.xls");
} else
//other browser not tested on IE 11
sa = window.open('data:application/vnd.ms-excel,'+ encodeURIComponent(tab_text));
return (sa);
}
,而不是调用它。
试试这样:
funcSort