小编Kon*_*lph的帖子

来自右值的非const类型引用

请考虑以下代码:

class Widget{};

template<typename T>
T &&foo2(T &&t){
    return std::forward<T>( t );
}

/// Return 1st element
template<typename T>
typename std::tuple_element<0, typename std::decay<T>::type >::type  &&foo(T &&t){
    return std::forward< typename std::tuple_element<0, typename std::decay<T>::type >::type >
            ( std::get<0>(t) );
}

Widget w;
auto list = std::make_tuple(
    w,
    Widget()
);


int main()
{
  auto &l  = foo(list );                      // This is NOT work
  //auto &l2 = foo2( std::get<0>(list) );     // This one works.
}
Run Code Online (Sandbox Code Playgroud)

http://coliru.stacked-crooked.com/a/4d3b74ca6f043e45

当我尝试编译时,我收到以下错误:

error: invalid initialization of non-const reference of …
Run Code Online (Sandbox Code Playgroud)

c++ templates rvalue-reference c++11

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

汇总所有列

我有以下格式的数据:

gen = function () sample.int(10, replace = TRUE)
x = data.frame(A = gen(), C = gen(), G = gen(), T = gen())
Run Code Online (Sandbox Code Playgroud)

我现在想要在每行中附加行中所有元素的总和(我的实际函数更复杂,但sum说明了问题).

没有dplyr,我会写

cbind(x, Sum = apply(x, 1, sum))
Run Code Online (Sandbox Code Playgroud)

导致:

   A C  G T Sum
1  3 1  6 9  19
2  3 4  3 3  13
3  3 1 10 5  19
4  7 2  1 6  16
…
Run Code Online (Sandbox Code Playgroud)

但用dplyr做这件事似乎很难.

我试过了

x %>% rowwise() %>% mutate(Sum = sum(A : T))
Run Code Online (Sandbox Code Playgroud)

但结果不是每一行的总和,这是意想不到的东西,(对我来说)莫名其妙.

我也试过了

x %>% rowwise() …
Run Code Online (Sandbox Code Playgroud)

r summarization dplyr

10
推荐指数
2
解决办法
1830
查看次数

编码特殊字符以传递到URL

我正在尝试学习Python,所以我想首先尝试查询IMDB以对照IMDB检查我的电影收藏;一切顺利

我所坚持的是如何处理名称中的特殊字符,以及如何将名称编码为URL会尊重的名称。

例如我有电影 Bru?no

如果使用urllib.parse.quoteget 对字符串进行编码 - Bru%CC%88no 这意味着当我使用OMDBAPI查询IMDB时,找不到电影。如果我通过OMDBAPI网站进行搜索,则它们会将名称编码为,Br%C3%BCno并且此搜索有效。

我假设编码使用的是其他标准,但是我无法解决需要做的事情

python urlencode python-3.x omdbapi

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

以简洁的方式显示多个代码块

我正在创建一个博客,blogdown在其中比较来自 R 的代码和来自 Stata 的代码。我想展示这两个代码,以便用户可以比较它在 R 和 Stata 中是如何完成的。但是,将两个或更多块放在一行中(R 的代码,Stata + 输出的代码)会使阅读变得非常不舒服。

我想到了几个布局来包含几个块,但我不知道它们是否已经实现,或者是否有可能这样做。


有一个按钮来显示/隐藏块(每个块一个按钮)

一种想法是:

  • 文章中默认可见的 R 代码块,
  • 默认情况下,Stata 代码块不可见,但如果用户单击按钮则可见

此人这个人成功地折叠在blogdown他们的代码块,但显然它在默认情况下隐藏或显示每个块。默认情况下如何只隐藏一些块?是否有隐藏或显示代码块的选项(如选项evalecho...)blogdown


带有“标签”的块

这部分的标题不言自明:是否可以在一个块中包含选项卡,以便我们可以从一种代码切换到另一种代码(就像 Web 浏览器中的选项卡一样)?


并排显示两个块

在某些blogdown主题中(也许是所有主题,我不知道),宽度相当减少,并且侧面有一些未使用的空间。因此,是否可以在文章的某些部分增加宽度并并排显示两个块?

知道这些布局之一是否可以实现blogdown吗?

r blogdown

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

什么是“托尼表”?

下面这句话摘自GitHub页面

前/后表(“托尼表”)中描述的 C++20 功能

  1. C++ 文化中的Tony 表是什么?

  2. 为什么它们被用来表示前/后表

c++

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

使用 Poetry 安装 SQLAlchemy 会导致 AttributeErrorr

使用pip安装时,pip install sqlalchemy一切正常。

使用诗歌安装时出现错误

?  backend poetry add sqlalchemy
Using version ^1.4.23 for SQLAlchemy

Updating dependencies
Resolving dependencies... (0.1s)

  AttributeError

  'EmptyConstraint' object has no attribute 'allows'

  at ~/.poetry/lib/poetry/_vendor/py3.8/poetry/core/version/markers.py:291 in validate
      287?
      288?         if self._name not in environment:
      289?             return True
      290?
    ? 291?         return self._constraint.allows(self._parser(environment[self._name]))
      292?
      293?     def without_extras(self):  # type: () -> MarkerTypes
      294?         return self.exclude("extra")
      295?
?  backend
Run Code Online (Sandbox Code Playgroud)

python python-poetry

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

设置parent.env,然后是`detach`,segfaults

下面的代码在R(3.0.2中执行但是我假设它与其他版本类似)时可重现的段错误:

ns = new.env(parent = .BaseNamespaceEnv)
local(f <- function () 42, envir = ns)
x = list2env(as.list(ns), parent = as.environment(2))
parent.env(.GlobalEnv) = x
detach()
Run Code Online (Sandbox Code Playgroud)

是的,我知道文件parent.env说的

替换功能parent.env<-非常危险,因为它可以用于以违反内部C代码假设的方式破坏性地改变环境.它可能会在不久的将来被删除.

这就是我似乎遇到的问题.但是,我想了解为什么这种行为是这样的,以及如何避免它.

以下简化代码并不会有这样的问题:

x = new.env(parent = as.environment(2))
local(f <- function () 42, envir = x)
parent.env(.GlobalEnv) = x
detach()
Run Code Online (Sandbox Code Playgroud)

...所以它似乎有所不同,它x包含parent.env一个不同(未连接)环境的函数.

同样,使用attachparent.env<-不是导致崩溃.(那么为什么不简单地使用attach?因为在我的代码中,.GlobalEnv部分是一个可能引用不同环境的变量.)

崩溃转储告诉我段错误发生在do_detach(envir.c)中.该代码包含以下行:

isSpecial = IS_USER_DATABASE(s);
if(isSpecial) { …
Run Code Online (Sandbox Code Playgroud)

environment r

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

线程安全矢量

首先让我说我已经阅读了关于这个主题的大部分SO和其他主题.

我理解的方式,std :: vector 在推回新项目时重新分配内存,这是我的情况,除非我保留了足够的空间(这不是我的情况).

我所拥有的是std :: shared_ptr的向量,并且该向量包含唯一对象(或者更准确地说,指向向量中的唯一对象).

通过指针处理这些对象是围绕Factory&Handler类进行的,但是可以从包装类外部访问指向对象的指针,并且可以修改成员值.任何时候都不会发生删除.

如果我正确理解先前关于std :: vector和线程安全的SO问题中提出的问题,添加(push_back)新对象可能会使先前的指针无效,因为向量内部可能会重新分配内存并复制所有内容,这当然是一场灾难为了我.

我的意图是从该向量读取,通常通过指针修改对象,并从异步运行的线程向向量添加新项.

所以,

  1. 使用原子或互斥是不够的?如果我从一个线程推回,另一个通过指针处理对象的线程可能最终有一个无效的对象?
  2. 是否有可以处理这种形式的MT问题的库?我一直在阅读的是英特尔的TBB,但由于我已经在使用C++ 11,我希望将更改保持在最低限度,即使这对我来说意味着更多的工作 - 我想在这个过程中学习,而不仅仅是复制粘贴.
  3. 除了在修改对象时锁定访问权限,我希望对向量的异步并行读取访问不会被push_backs无效.我怎样才能做到这一点?

如果它具有任何重要性,那么以上所有内容都是在linux(debian jessie)上使用gcc-4.8并启用了c ++ 11.

我愿意使用微创库.

提前谢谢了 :-)

c++ multithreading vector c++11

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

类方法的隐式`this`类型

编辑:这似乎是Typescript中的一个已知问题.一个解决方案一旦实施,但由于无法解决的性能问题而最终被解决.

这种情况通常出现在我们的代码库中:

function consumer<T>(valueProducer: () => T) {
    let value = valueProducer();
    console.log(value);
}

class Foo {
    private _value: number = 100;

    getValue(): number {
        return this._value;
    }

    constructor() {
        // Oops! Inside consumer(), getValue will be called with wrong this
        consumer(this.getValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

Typescript中的解决方案是这样的:

consumer( () => this.getValue() ); // capture correct this
Run Code Online (Sandbox Code Playgroud)

或这个:

consumer( this.getValue.bind(this) ); // bind to correct this
Run Code Online (Sandbox Code Playgroud)

这个问题对于Typescript/Javascript程序员来说可能是显而易见的,但是我们的团队正在将大量的C#移植到Typescript,而在C#中这不是错误(即C#中传递的方法自动绑定到对象实例).所以我希望类型系统能够捕获此错误,如果可能的话.

显式键入this回调使用的第一个明显的步骤:

function consumer<T>(valueProducer: (this: void) => T) {
    let value …
Run Code Online (Sandbox Code Playgroud)

typescript

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

如果模板arg是const,则将const添加到type

我有一节课:

struct Foo {
  vector<float> data;
};
Run Code Online (Sandbox Code Playgroud)

我有一个模板化的函数,需要一个Foo&:

template<typename T>
void f(T& arg) {
  using ftype = float *;    // <-- would like this to be const float * if T is const
  ftype ptr = &arg.data[0];
  // ... do stuff with ptr ...
}
Run Code Online (Sandbox Code Playgroud)

const float *如果iff T是const,我该如何制作ptr ?我知道add_constis_const,但没有看到如何在这里使用它们.(我真正的结构更复杂,我没有直接访问其内部;它实际上是一个OpenCV cv::Mat.)如果需要,我可以使用最新的(C++ 14/C++ 17)功能.

我会像这样使用它:

Foo foo1 = Foo();
f(foo1); // modifiable in f
const Foo cfoo = Foo();
f(cfoo); // const, should not be …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

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