我想知道是否可以使用实现单个(和可能的双重)链表std::experimental::optional.
template <typename T>
struct node {
std::experimental::optional<node<T>> next;
T data;
};
Run Code Online (Sandbox Code Playgroud)
这种设计有哪些优点/缺点?可以使用新c++1z功能来实现哨兵,还是完全摆脱它们?这会扩大到n-ary树吗?
我正在尝试为clang-tidy创建一个自定义cmake目标,以便对我的项目进行lint.源文件夹看起来像这样:
src/scripts/run-clang-tidy.py
src/.clang-tidy
src/...
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的计划是使用自定义命令将这两个文件复制到构建目录:
add_custom_command(
OUTPUT run-clang-tidy.py .clang-tidy
COMMAND cp ${CMAKE_SOURCE_DIR}/scripts/run-clang-tidy.py ${CMAKE_SOURCE_DIR}/.clang-tidy ${CMAKE_CURRENT_BINARY_DIR})
Run Code Online (Sandbox Code Playgroud)
我现在想要run-clang-tidy.py在构建目录(应该是工作目录)中调用自定义目标,以便我可以调用:
make lint
Run Code Online (Sandbox Code Playgroud)
哪个应该运行指定的检查.clang-tidy.
要使此脚本起作用,它还需要该CMAKE_EXPORT_COMPILE_COMMANDS选项.我尝试使用以下命令设置它,但它无法识别它:
add_definitions(-DCMAKE_EXPORT_COMPILE_COMMANDS=ON)
Run Code Online (Sandbox Code Playgroud)
电话add_custom_target怎么样?
将命令式算法转换为函数式风格我遇到了一些困难.我无法理解的主要概念是如何根据序列中的位置填充序列值.在Haskell中,以下算法的惯用解决方案如何?
A = unsigned char[256]
idx <- 1
for(i = 0 to 255)
if (some_condition(i))
A[i] <- idx
idx++
else
A[i] = 0;
Run Code Online (Sandbox Code Playgroud)
该算法基本上为直方图的映射函数创建查找表.
你知道哪些资源可以帮助我更好地理解这类问题吗?
我有一个QByteArray,我想用Qt保存在JSON文件中,也可以再次读取它.由于JSON原生无法存储原始数据,我认为最好的方法可能是字符串?目标是以这种方式保存QPixmap:
{
"format" : "jpg",
"data" : "...jibberish..."
}
Run Code Online (Sandbox Code Playgroud)
我如何实现这一点以及如何再次从这个JSON对象中读取(我使用的是Qt5)?我现在拥有的是这样的:
QPixmap p;
...
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
p.save(&buffer, "jpg");
QJsonObject json;
gameObject["data"] = QString(buffer.data());
QJsonDocument doc(json);
file.write(doc.toJson());
Run Code Online (Sandbox Code Playgroud)
但由此产生的"乱码"是缩短包含整个图像的方法.
我正在寻找一种方法来建模一个树,每个节点有一个任意数量的子节点.
这个答案建议使用Boost Graph Library来完成这项任务:
我需要执行的主要操作是树的遍历函数(preorder,children,leafs)及其子树.我还需要从孩子们那里收集数据的功能.
BGL是否是正确的选择,如何实现一个简单树的前序遍历?在文档中,我只能找到常规图表的信息.
编辑:我也知道tree.hh图书馆,但它的许可似乎并不适合所有人.
我正在尝试编写一个类,它应该作为一些基础元素序列的排序视图.到目前为止,我已经提出了非const版本.现在我在调整它以提供const_iterator功能方面遇到了问题.
到目前为止我的代码看起来像这样:
// forward declare iterator
template <class InputIt>
class sorted_range_iter;
template <class InputIt>
class sorted_range {
friend class sorted_range_iter<InputIt>;
private:
using T = typename InputIt::value_type;
InputIt _first;
InputIt _last;
std::vector<size_t> _indices;
public:
using iterator = sorted_range_iter<InputIt>;
sorted_range() = default;
sorted_range(InputIt first, InputIt last)
: _first(first), _last(last), _indices(std::distance(_first, _last)) {
std::iota(_indices.begin(), _indices.end(), 0);
};
template <class Compare = std::less<T>>
void sort(Compare comp = Compare()) {
std::sort(_indices.begin(), _indices.end(),
[this, &comp](size_t i1, size_t i2) {
return comp(*(_first + …Run Code Online (Sandbox Code Playgroud) 我想创建一个struct包含nalgebra::MatrixN这是U1更大的:
extern crate nalgebra as na;
use na::{DimName, DimNameAdd, DimNameSum, MatrixN, U1};
pub struct Homogenous<D: DimName>
where
D: DimNameAdd<U1>,
{
mat: na::MatrixN<f32, DimNameSum<D, U1>>,
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
extern crate nalgebra as na;
use na::{DimName, DimNameAdd, DimNameSum, MatrixN, U1};
pub struct Homogenous<D: DimName>
where
D: DimNameAdd<U1>,
{
mat: na::MatrixN<f32, DimNameSum<D, U1>>,
}
Run Code Online (Sandbox Code Playgroud)
尝试遵循错误消息会导致出现下一个特征错误消息的兔子洞。我看过 nalgebra 的 API,里面没有这么复杂的 trait 链。例如to_homogenous方法。我不确定我的方法是否正确。
也Dim有相应的特征DimAddand DimSum,但是由于该部分nalgebra没有真正记录下来,
我不知道我是否走在正确的道路上——或者我想做的事情是否可能。
我正在尝试使用gpipe包在Haskell的屏幕上随机位置绘制四边形.由于四边形将位于2D中,我还想设置正交投影.我怎么似乎没有得到光栅化的类型.这是我的代码(使用gpipe教程拼凑在一起):
{-# LANGUAGE ScopedTypeVariables, PackageImports, FlexibleContexts, TypeFamilies #-}
module Main where
import Graphics.GPipe
import qualified "GPipe-GLFW" Graphics.GPipe.Context.GLFW as GLFW
import Control.Monad (unless)
import System.Random
-- Generate random points in 2d
getRandomPoints2D :: (Float, Float) -> StdGen -> [V4 Float]
getRandomPoints2D range sg = zipWith createPoint x y
where createPoint x y = V4 x y 0 1
(sg1, sg2) = split sg
x = randomRs range sg1
y = randomRs range sg2
getPoints :: Int -> StdGen -> …Run Code Online (Sandbox Code Playgroud) 我有一个像数据结构一样的树定义为:
template<typename T>
struct node {
T val;
node<T>* parent;
unique_ptr<node<T>> next_sibling;
unique_ptr<node<T>> first_child;
};
template<typename T>
struct tree {
...
private:
unique_ptr<node<T> _head;
};
Run Code Online (Sandbox Code Playgroud)
我还为树类定义了几个迭代器(preorder,inorder ...).
使用std::transform给定的树的作品:
tree<int> t;
...
std::transform(t.begin(), t.end(), t.begin(), [](){});
Run Code Online (Sandbox Code Playgroud)
但是我知道想要有类似于a的东西back_inserter来构建具有相同层次结构的新树:
tree<int> t_n;
std::transform(t.begin(), t.end(), my_inserter(t_n));
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
我有一个类,需要在几个不同的成员方法中随机数.我正在使用C++11,我认为在每种方法中新建一个随机数生成器是不可行的.
是否可以通过使其成为类的成员属性或类型def来共享整个类中的随机数生成器,同时仍然确保良好的随机性?
我怎么能这样做,也许你可以给我一个小例子?我应该在哪里设置随机引擎的种子,我想使用Mersenne twister具有不同类型分布(normal&uniform)的引擎.