小编use*_*609的帖子

使用clang优化进行编译时获得意外结果

我在代码中发现了一个错误,只有在我启用编译器优化-O1或更高版本时才会发生错误.我追踪了这个bug,似乎在启用优化时我无法在boost转换范围上使用boost type_erased适配器.我写了这个c ++程序来重现它:

#include <iostream>
#include <vector>
#include <boost/range/adaptor/transformed.hpp>
#include <boost/range/adaptor/type_erased.hpp>

using namespace boost::adaptors;
using namespace std;

int addOne(int b) {
  return b + 1;
}

int main(int, char**) {
  vector<int> nums{ 1, 2, 3 };

  auto result1 = nums | transformed(addOne) | type_erased<int, boost::forward_traversal_tag>();
  auto result2 = nums | transformed(addOne);
  auto result3 = nums | type_erased<int, boost::forward_traversal_tag>();

  for (auto n : result1)
    cout << n << " ";
  cout << endl;

  for (auto n : result2)
    cout << n …
Run Code Online (Sandbox Code Playgroud)

c++ boost clang c++11

5
推荐指数
2
解决办法
400
查看次数

直接非循环图中的最长路径

如何在DAG中找到没有重量的最长路径?

我知道,如果对DAG进行拓扑排序,则可以在线性时间内找到从A到B的最长路径,但是我需要在所有图中找到最长的路径。有什么方法比搜索所有顶点对之间的最长路径(这将是O(n ^ 3))更快吗?

algorithm directed-acyclic-graphs longest-path

1
推荐指数
1
解决办法
1514
查看次数