小编Ale*_*ph0的帖子

Uniform initialization by tuple

Today, I arrived at a situation, where I have a vector of tuples, where the tuples might contain several entries. Now I wanted to convert my vector of tuples to a vector of objects, such that the entries of the tuples will exactly match the uniform initialization of my object.

The following code does the job for me, but it is a bit clumsy. I'm asking myself if it might be possible to derive a generic solution that can construct …

c++ stl stl-algorithm uniform-initialization stdtuple

26
推荐指数
3
解决办法
679
查看次数

结构的通用比较运算符

在许多单元测试中,我需要比较仅具有数据成员的简单结构的内容:

struct Object {
  int start;
  int stop;
  std::string message;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想写一些类似的东西:

CHECK(object1==object2);
Run Code Online (Sandbox Code Playgroud)

我总是必须实现:

bool operator==(const Object& lhs, const Object& rhs) {
   return lhs.start==rhs.start && lhs.stop==rhs.stop && lhs.message=rhs.message;
}
Run Code Online (Sandbox Code Playgroud)

Writing all these comparison functions becomes tedious, but is also prone to errors. Just imagine, what will happen if I add a new data member to Object, but the comparison operator will not be updated.

Then I remembered my knowledge in Haskell and the magic deriving(Eq) directive, which just generates a …

c++ stdtuple c++17

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

将QStringList打包到QString并将其解包

我正在寻找一种简单而万无一失的方法来将任意转换QStringList为单个QString和后退.

QStringList fruits;
fruits << "Banana", "Apple", "Orange";
QString packedFruits = pack(fruits);
QStringList unpackFruits = unpack(packedFruits);

// Should be true 
// fruits == unpackFruits;
Run Code Online (Sandbox Code Playgroud)

对于这类问题,最简单的解决方案是什么?

c++ qstring qt

9
推荐指数
3
解决办法
1万
查看次数

获取位于特定时间间隔内的已排序值列表的子列表的最短方法

今天我问自己什么可能是最短的代码来获取排序向量中的所有值std::vector<double>,它们大于或等于a和小于或等于b.

我的第一种方法如下:

#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>

// Returns all values in sortedValues being greater equal start and smaller equal end;
std::vector<double> cutValues(const std::vector<double>& sortedValues, double start, double end) {
    std::vector<double> ret;

    auto startIter=std::lower_bound(sortedValues.begin(), sortedValues.end(), start);
    auto stopIter = std::upper_bound(sortedValues.begin(), sortedValues.end(), end);
    std::copy(startIter, stopIter, std::back_inserter(ret));
    return ret;
}

int main(int argc, char **args) {
    {
        auto ret = cutValues({ 0.1,0.2,0.3 }, 0.1, 0.3);
        std::copy(ret.begin(), ret.end(), std::ostream_iterator<double>(std::cout, ","));
        std::cout << std::endl;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

从给定的嵌套boost-variant类型创建新的boost-variant类型

假设我有一个嵌套boost::variant类型TNested包含一些类型和一些其他boost::variant类型(它本身不能再包含boost::variant types,因此不会有递归).

我正在寻找一个模板别名flatten<TNested>,它将评估一个boost::variant没有嵌套boost::variant的类型,例如TFlatten,虽然可能的重复类型被删除,例如int只发生一次.

我真的不知道,如果这可以以某种方式完成.

#include <boost/variant.hpp>
#include <boost/any.hpp>
#include <iostream>

struct Person;

typedef boost::variant<int, double, boost::variant<std::string, int>, boost::variant<Person>> TNested;
typedef boost::variant<int, double, std::string, Person> TFlatten;

template<typename NestedVariant>
using flatten = //???

int main() {
    flatten<TNested> x; 
    std::cout << typeid(x) == typeid(TFlatten) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ boost-variant boost-mpl template-meta-programming variadic-templates

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

使用 Sphinx 在 Latex 中自定义页眉和页脚

我们正在探索 Sphinx 的功能,以重建我们的旧手册。我们已经将大部分以前的手册移植到了 Sphinx。现在我正在探索调整我们公司风格的可能性。

特别是,我们想更改 PDF 手册中页眉和页脚的外观。包括公司徽标和更改偶数页和奇数页的外观。

因此,我在conf.py使用包的自定义页面样式中包含了以下序言fancyhdr

latex_elements = {
    'preamble' : '''\
        \\pagestyle{fancy}
        \\fancyhf{}
        \\fancyhead[LE,RO]{My Header}'''
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,标题只在 之前更改begin{document},之后 Sphinx 样式文件sphinx.sty以某种方式覆盖了我的设置。

以下代码片段sphinx.sty可能会导致问题:

% Redefine the 'normal' header/footer style when using "fancyhdr" package:
\spx@ifundefined{fancyhf}{}{
  % Use \pagestyle{normal} as the primary pagestyle for text.
  \fancypagestyle{normal}{
    \fancyhf{}
    \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
    \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
    \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
    \fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}}
    \renewcommand{\headrulewidth}{0.4pt}
    \renewcommand{\footrulewidth}{0.4pt}
    % define chaptermark with \@chappos when \@chappos is available for Japanese
    \spx@ifundefined{@chappos}{}
      {\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}}
  }
  % …
Run Code Online (Sandbox Code Playgroud)

latex tex pdflatex python-sphinx

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

使用 Sphinx Extension 将 svg 转换为 pdf

我的公司正在使用 Sphinx 为我们的产品创建手册。我们的产品附带 PDF 和 HTML 文档。我们使用 Windows 作为唯一的开发环境。

必要的要求是从相同的源(*.rst 文件)生成两种格式。

旧文档使用大量 SVG 图像,但 sphinx 构建格式latex不支持\includegraphics{}环境中的 SVG 文件。

现在我找到了有前途的 Sphinx-Extensionsphinx.ext.imgconverter并将其包含到我的conf.py.

extensions = [
    'sphinx.ext.imgmath',
    'sphinx.ext.ifconfig',
    'sphinx.ext.imgconverter'
]
Run Code Online (Sandbox Code Playgroud)

如果我正在构建 LaTeX,希望将所有 SVG 文件转换为 PDF 文件。不幸的是,该扩展的文档非常短,并且没有有效的示例。

http://www.sphinx-doc.org/en/master/ext/imgconverter.html#module-sphinx.ext.imgconverter

我们第一个文件的内容基本上是:

.. image:: Image.*
   :width: 100px
Run Code Online (Sandbox Code Playgroud)

Sphinx 应该根据构建的 html/pdf 自行确定是否应将星号替换为 svg 或 pdf。我从之前的帖子中得到的信息:

  1. 使用 Sphinx 文档,如何为 HTML 构建指定 png 图像格式,为 Latex/PDF 构建指定 pdf 图像格式?

但不知怎的,我无法生成我的乳胶。 使用 Sphinx 文档,如何为 HTML 构建指定 png 图像格式,为 Latex/PDF 构建指定 pdf 图像格式?

相反,会发出以下警告:

WARNING: …
Run Code Online (Sandbox Code Playgroud)

latex imagemagick pdflatex python-sphinx imagemagick-convert

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

更正向前声明完全专业的模板类

假设我有以下文件:

Generic.h:复杂的模板类

#pragma once

template<typename K, typename V, template<typename Key, typename Value, typename ...> typename C>
struct GenericMap
{
    C<K, V> key;
};
Run Code Online (Sandbox Code Playgroud)

Special.h:定义所提及模板类的完全专用版本,从而简化易用性。

#pragma once

#include "Generic.h"
#include <string>
#include <map>

typedef GenericMap<std::string, int, std::map> SpecialMap;
Run Code Online (Sandbox Code Playgroud)

Client.h:使用SpecialMap并定义前向声明的客户端。

#pragma once

class SpecialMap; // Wrong forward declaration

struct Client {
    Client();
    SpecialMap* map;
};
Run Code Online (Sandbox Code Playgroud)

Client.cpp:客户代码可能知道Generic.hSpecial.h

#include "Client.h"
#include "Special.h"

Client::Client()
{
    map["343"] = 2;
}
Run Code Online (Sandbox Code Playgroud)

main.cpp:

#include <Client.h>

int main(int argc, char**args) …
Run Code Online (Sandbox Code Playgroud)

c++ templates forward-declaration class-template

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

QTreeView 禁用根节点的显示

在我的项目中,我使用 aQTreeView来显示绘图配置。在顶部,我有一个名为的根节点,PlotConfig其中包含多个绘图窗口。每个绘图窗口包含几个简单的 xy 绘图。

基本上,我有这样的东西:

我的地块配置

我正在使用自己的QAbstractItemModel来显示此绘图配置。一切正常,但根节点PlotConfig确实分散了用户的注意力。

所以我想要这样的东西:

我想要的绘图配置

有没有办法禁止显示根节点?直接在QTreeView或在QAbstractItemModel. 我基本上想要的是QList每个条目都表现得像一棵树。

c++ qt qtreeview qabstractitemmodel

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

QWebEnginePage 不知道其内容大小

我有一个非常简单的应用程序WebEngineView,我只想将显示的小部件大小调整为 html 文件的内容。我期望它是 30 像素宽。相反,我的程序会打印QSize(0,0),更糟糕的是,小部件根本没有显示。

我在这里做错了什么?

#include <QWebEngineView>
#include <QApplication>
#include <QDebug>
#include <QWebEnginePage>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    auto view = new QWebEngineView;
    QString html = "<html><body><div width=30px>Text</div></body></html>";
    view->setHtml(html);
    auto contentsSize=view->page()->contentsSize().toSize();
    qDebug() << contentsSize;
    view->setFixedSize(contentsSize);
    view->show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

将我的 QWebEngineView 放入对话框仍然不起作用:

#include <QWebEngineView>
#include <QApplication>
#include <QDebug>
#include <QDialog>
#include <QHBoxLayout>
#include <QWebEnginePage>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    auto dialog = new QDialog;
    dialog->setLayout(new QHBoxLayout);
    auto …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt5 qwebengineview qwebenginepage

5
推荐指数
0
解决办法
1359
查看次数