gpt4 book ai didi

C++ 对 vector 或链表进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:56 24 4
gpt4 key购买 nike

我有一个输入文件,我想根据时间戳对其进行排序,时间戳是每条记录的子字符串。我想存储

的多个属性

该列表目前大约有 1000 条记录。但是,我希望它能够扩大一点以防万一。

当我通过搜索整个列表来插入链接列表时,大约需要 20 秒。现在,仅仅填充一个 vector 并输出到文件就需要 4 秒(这听起来是不是太长了)?

我想使用合并排序或快速排序(合并排序对我来说似乎更容易一些)。我遇到的问题是,我没有看到很多使用对象而不是原始数据类型来实现这些排序的示例。

我可以使用 vector 或链表。到目前为止,我从该站点获得的反馈是最有帮助的。我希望有人可以洒在神奇的 Sprite 尘上,让我更轻松 :)

任何有关以相当不错的性能执行此操作的最简单方法的链接或示例将不胜感激。因为我是 C++ 的新手,所以我对如何使用对象实现这些排序感到困惑 :)

这是我的新代码的样子(还没有排序):

class CFileInfo  
{
public:
std::string m_PackLine;
std::string m_FileDateTime;
int m_NumDownloads;
};
void main()
{
CFileInfo packInfo;
vector<CFileInfo> unsortedFiles;
vector<CFileInfo>::iterator Iter;
packInfo.m_PackLine = "Sample Line 1";
packInfo.m_FileDateTime = "06/22/2008 04:34";
packInfo.m_NumDownloads = 0;
unsortedFiles.push_back(packInfo);
packInfo.m_PackLine = "Sample Line 2";
packInfo.m_FileDateTime = "12/05/2007 14:54";
packInfo.m_NumDownloads = 1;
unsortedFiles.push_back(packInfo);
for (Iter = unsortedFiles.begin(); Iter != unsortedFiles.end(); ++Iter )
{
cout << " " << (*Iter).m_PackLine;
}
}

最佳答案

我不确定我是否正确理解了您的问题,您的问题是定义排序仿函数吗? STL 排序通常作为内省(introspection)排序实现,这对大多数情况都非常有用。

struct sort_functor
{
bool operator()(const CFileInfo & a, const CFileInfo & b) const
{

// may be a little bit more subtle depending on what your strings look like
return a.m_FileDateTime < b.m_FileDateTime;
}
}

std::sort(unsortedFiles.begin(), unsortedFile.end(), sort_functor());

或使用 boost::lambda

std::sort(unsortedFiles.begin(), 
unsortedFile.end(),
bind(&CFileInfo::m_FileDateTime, _1) < bind(&CFileInfo::m_FileDateTime, _2));

这是所需的信息吗?

关于C++ 对 vector 或链表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/331889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com