gpt4 book ai didi

C++仅从数组中获取数据的中间部分

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:51 26 4
gpt4 key购买 nike

我有一个这样的数组:

string dates [5] = { "15-JAN-17", "15-JAN-17", "17-JAN-17", 
"04-FEB-17", "04-FEB-17" };

string startDate = "15-JAN-17";
string endDate = "04-FEB-17";

有没有办法获取开始日期和结束日期之间的数据?我需要得到的是:

"15-JAN-17", "17-JAN-17", "04-FEB-17"

我计划使用 for 循环进行搜索,我会将所有结果放入另一个名为 chosenDates 的数组中。我怎样才能得到这个结果,而且由于会有重复的日期,我怎样才能确保程序从第一个结果开始获取并在 startDate 和 endDate 提供的最后一个结果处结束?

编辑:我还应该提到,即使数组变大,日期也会始终排序。

最佳答案

考虑到您计划对这些字符串执行的各种操作,我认为定义一些新的自定义类型来表示日期是最有意义的。构造函数会将日期字符串解析为明确的年月日,您可以提供对每个字段的读取访问权限。一旦你这样做了,你可以在你的日期类型上重载关系运算符,这样你就可以比较日期并将日期排序为升序。

一旦你有了类似的东西,你就有了很多关于如何继续的选择。一种方法是将所有内容都放入 std::set 中,它会自动消除重复项并保持排序顺序,这样您就可以像这样执行范围查询:

std::set<Date> dates = /* ... */
for (auto itr = dates.lower_bound(Date{"15-JAN-17"}),
end = dates.upper_bound(Date{"04-FEB-17"});
itr != end; ++itr) {
// Use *itr
}

您还可以将所有内容存储在 std::vector 中,使用 std::unique 删除重复项,然后使用 std::lower_boundstd::upper_bound 选择您想要使用的范围。

关于C++仅从数组中获取数据的中间部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460256/

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