gpt4 book ai didi

c# - 使用点符号、orderBy 和 firstOrDefault 的开源 C++ LINQ 库?

转载 作者:可可西里 更新时间:2023-11-01 18:39:40 26 4
gpt4 key购买 nike

我使用 C# LINQ 点语法搜索 VS2010 兼容的 C++ linq 库。意思是这样的:from(...).where(...).orderBy.firstOrDefault();

我用谷歌搜索并找到了这个 so answer LINQ libraries collection/mess :

其他我发现没有使用点符号.. 顺便说一句 pfultz2/Linq似乎提供 orderBy 和首先它的 SQL 像 LINQ sintax 和 Limitations让它成为我不想要的东西=(

那么有没有带点符号、orderBy 和 firstOrDefault 的开源 C++ LINQ 库?

最佳答案

好吧,我不会给你你想要的回复,但无论如何都会回复:-)

LINQ 主要用于 C#。我认为您的用例应该是将 C# 代码转换为 C++,但我认为 C++ 中的有效方法是使用 Boost.Range .

Boost.Range 以一种易于查询数据的方式重用了 c++ 标准库:

  1. 您可以使用 operator | 从左到右的符号将适配器用于容器。它们被延迟计算,就像在 LINQ 中一样。
  2. 您可以在适配范围内执行std::min、std::max、std::all_of、std::any_of、std::none_of等操作。

我前几天写的一个例子是如何反转字符串中的单词。解决方案是这样的:

using string_range = boost::iterator_range<std::string::const_iterator>;

struct submatch_to_string_range {
using result_type = string_range;

template <class T>
string_range operator()(T const & s) const {
return string_range(s.first, s.second);

}
};

string sentence = "This is a sentence";

auto words_query = sentence |
ba::tokenized(R"((\w+))") |
ba::transformed(submatch_to_string_range{}) |
ba::reversed;


vector<string_range> words(words_query.begin(), words_query.end());

for (auto const & w : words)
cout << words << endl;

我强烈建议您基于此库进行查询,因为它将在很长一段时间内得到支持,而且我认为这将是 future 。您可以执行相同样式的查询。

如果这个库可以用之类的东西扩展就好了|最大值| to_vector 以避免直接命名 vector 和复制,但我认为作为一种查询语言,现在,它是可以接受的。

关于c# - 使用点符号、orderBy 和 firstOrDefault 的开源 C++ LINQ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15454376/

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