相关疑难解决方法(0)

boost是否具有比STL更简单的set操作的数据类型?

我发现使用C++ STL方法进行简单的集合操作非常笨重.例如,要找到两组之间的差异:

std::set<int> newUserIds;
set_difference(currentUserIds.begin(), currentUserIds.end(), mPreviousUserIds.begin(), mPreviousUserIds.end(), std::inserter(newUserIds, newUserIds.end()));
std::set<int> missingUserIds;
set_difference(mPreviousUserIds.begin(), mPreviousUserIds.end(), currentUserIds.begin(), currentUserIds.end(), std::inserter(missingUserIds, missingUserIds.end()));
mPreviousUserIds = currentUserIds;
Run Code Online (Sandbox Code Playgroud)

boost是否提供了一组替代类,可以将上面的示例缩小为:

set_type<int> newUserIds = currentUserIds.difference(mPreviousUserIds);
set_type<int> missingUserIds = mPreviousUserIds.difference(currentUserIds);
Run Code Online (Sandbox Code Playgroud)

(类似于Qt中的QSet,它operator-以这种方式覆盖.)

c++ boost stl set

26
推荐指数
2
解决办法
3964
查看次数

何时使用boost :: optional以及何时使用std :: unique_ptr,如果你想实现一个可以返回"nothing"的函数?

根据我的理解,有两种方法可以实现有时不返回结果的函数(例如,在ppl列表中找到的人).

* - 我们忽略原始ptr版本,与bool标志配对,以及未找到版本时的异常.

boost::optional<Person> findPersonInList();
Run Code Online (Sandbox Code Playgroud)

要么

std::unique_ptr<Person> findPersonInList();
Run Code Online (Sandbox Code Playgroud)

那么有什么理由可以优先于另一个吗?

c++ boost unique-ptr c++11 boost-optional

22
推荐指数
5
解决办法
8067
查看次数

标签 统计

boost ×2

c++ ×2

boost-optional ×1

c++11 ×1

set ×1

stl ×1

unique-ptr ×1