小编And*_*rus的帖子

target_link_libraries和add_dependencies

是否有任何用例

target_link_libraries(my-lib x y z)

add_dependencies(my-lib x) # this is not just a waste of bytes?
Run Code Online (Sandbox Code Playgroud)

如果是这样,有人可以解释它会是什么吗?

cmake

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

绑定lambda的速度(通过std :: function)与functor struct的operator()

auto lam = [](int a, int b, int c) { return a < b && b < c; };

struct functor {
  int a;
  int b;
  bool operator()(int n) const { return a < n && n < b; }
};
Run Code Online (Sandbox Code Playgroud)

在第一版中,我们

std::vector<std::function<bool (int)>> lamvals;
// get parameters and for each
lamvals.emplace_back(std::bind(lam, a, std::placeholders::_1, b));
Run Code Online (Sandbox Code Playgroud)

替代方案是

std::vector<functor> lamvals;
// get parameters and for each
lamvals.emplace_back(functor{a, b});
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我们都有一个简单的迭代

    return std::any_of(lamvals.cbegin(), lamvals.cend(),
            [n](const decltype(lamvals)::value_type & t){return t(n);});
Run Code Online (Sandbox Code Playgroud)

我看到速度差为3:1,绑定的lambda更慢.仿函数几乎与存储整数对和硬编码测试一样快.显然,硬编码对于生产代码没那么有用,因为会有几个函数在起作用,而不仅仅是在它们之间.但是,我可以选择许多仿函数或许多lambdas.后者是更少的代码行,看起来更干净,但我认为我无法承受这种速度差异; 此代码处于关键循环中.

我正在寻找加速建议.

c++ performance lambda c++11

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

C++ lambda构造函数参数可以捕获构造的变量吗?

以下编译.但是,有没有任何悬挂参考问题?

    class Foo {
         Foo(std::function<void(int)> fn) { /* etc */ }
    }

    void f(int i, Foo& foo) { /* stuff with i and foo */ }

    Foo foo([&foo](int i){f(i, foo);});
Run Code Online (Sandbox Code Playgroud)

似乎工作.(真正的lambda当然更复杂.)

c++ lambda c++11

11
推荐指数
2
解决办法
4531
查看次数

如果没有if,std :: count_if会更快吗?

这是gcc std::count_if代码

template<typename _InputIterator, typename _Predicate>
  typename iterator_traits<_InputIterator>::difference_type
  count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred)
 {
  [snip]
  typename iterator_traits<_InputIterator>::difference_type __n = 0;
  for (; __first != __last; ++__first)
    if (__pred(*__first))
      ++__n;
  return __n;
}
Run Code Online (Sandbox Code Playgroud)

我的问题:使用它会更好(即更快)

__n += __pred(*__first); // instead of the if statement
Run Code Online (Sandbox Code Playgroud)

此版本始终执行添加,但不执行分支.

c++ performance gcc stl

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

std :: this_thread :: sleep_for()有没有虚假的唤醒?

注意,这不是一个问题std::condition_variable::wait_for().我知道可以假装醒来.

我的程序的行为表明这个问题的答案是肯定的,但是对于condition_variable案例,STL文档非常清楚.至少在cppreference.com上,this_thread的正确答案似乎是否定的.

编译器是gcc 4.8.1,如果这是一个缺陷.

c++ sleep stl thread-sleep c++11

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

用于读取密集型应用程序的分层数据存储

我正在尝试将类似层次结构的树(数据来自json)保存到我的数据库中.我正在尝试决定使用哪种数据库技术和技术来提高数据的读取效率.

在此输入图像描述

  1. 一个级别中的所有节点都具有相同的模式(树中一个级别中的所有节点都具有相同的属性集)
  2. 树中不同级别的节点没有相同的架构.所以相同的颜色意味着相同的类型(见图).
  3. 树结构Root - > A - > B - > D始终不成立.有时我直接获得根节点的子节点类型为D.或者类型A的节点具有类型D的子节点.
  4. 叶节点可以是B型或D型.树永远不会停在A级或root级.
  5. 我将在树中存储大约700个节点.

我想在一些数据库中表示这些数据.我会写一次,但多次阅读.

阅读查询将是这样的 - 给我B3的孩子; 或者给我一个根节点的盛大孩子(D型)......等等.什么/如何以最有效的方式存储这些数据?

database tree hierarchical-data graph-databases

6
推荐指数
0
解决办法
112
查看次数

在地图中构建一个不可移动的对象

我正在尝试在包含原子的地图中构造一个对象,因此既不能复制也不能移动AFAICT.

我对C++ 参考的阅读是地图emplace应该能够做到这一点.但是由于已删除或不存在的构造函数,以下代码无法编译.使用make_pair没有帮助.

#include <atomic>
#include <unordered_map>

class Z {
  std::atomic<int> i;
};

std::unordered_map<int, Z> map;

void test(void) {
  map.emplace(0, Z()); // error
  map[0] = Z(); // error
}
Run Code Online (Sandbox Code Playgroud)

这是可能的,如果没有,为什么不呢?

编辑:编译器是Linux上的gcc 4.8.1

c++ move-semantics c++11 stdatomic

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

Postgres 中不存在函数convert_from(charactervarying,unknown)

当我尝试在下面的代码中从 unicode 转换为 utf8 时,会 发生错误“函数convert_from(character不同,未知)不存在” 。

select convert_from(artists, 'UTF8') from songs where     
to_tsvector('simple',convert_from(artists, 'UTF8')) 
  @@ plainto_tsquery('simple','alizee') 
limit 100
Run Code Online (Sandbox Code Playgroud)

艺术家”列具有“TEXT”类型。

但当我跑步时

select convert_from(E'\u0422\u0438\u043c\u0430\u0442\u0438', 'UTF8');
Run Code Online (Sandbox Code Playgroud)

效果很好。

我该如何解决这个问题?我将不胜感激任何帮助。谢谢

postgresql

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

要将定义的(X)返回为true或false的宏

我想要一系列宏来替换下面的代码

#ifdef FOO
    return true;
#else
    return false;
#endif
Run Code Online (Sandbox Code Playgroud)

喜欢的东西

return MAGICLY_EXPANDING_IFDEFINED_MACRO(FOO);
Run Code Online (Sandbox Code Playgroud)

你可以猜到,有很多FOO,足以将4行减少到1会很酷.但实际上它会用一行替换一个怪物开关语句.

c c++ macros c-preprocessor

4
推荐指数
2
解决办法
1146
查看次数

为什么/何时应该使用static声明变量?

我没有C/C++的背景知识.我刚刚开始使用其他语言学习Objective-C.

在哪些情况下,我应该使用常规ivars或属性的变量的静态声明?我这样做有什么用?

谢谢

static objective-c

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

生成字符串并在运行时将其作为程序执行

这是一个难以理解的问题,我不确定它的正确用语是什么(如果有的话).我很好奇什么语言允许你在程序执行期间"构建"一个字符串,然后作为程序的一部分执行它.我所知道的唯一一种允许你这样做的语言是Snobol.

然而,阅读Tcl的维基百科条目,听起来它也可以做到这一点?

我一直认为这是一个很好的功能,即使它可能没有太多使用.谢谢.

PS:会用Snobol,Spitbol标记这个,但没有创建新标签的声誉.

programming-languages eval metaprogramming multistage snobol

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

包含std :: function <T()>和std :: function <T(int)>的map

我想要一个映射将字符串键映射到a std::function<T()>std::function<T(int)>(但不是两个都给定键)的映射.我得到一个编译错误,似乎没有模板std::function<T(...)>.我希望能够使用lambdas作为值.

首先,以这种方式存储功能是否安全?其次,如果是这样,语法是什么?(当从地图中检索到函数时,函数是一元函数还是无效函数.)如果不是上述函数,那么什么是合理的替代方案?指针杀死了lambda的想法,对...

C++ 11没问题.

c++ stdmap map c++11 std-function

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

Postgres:避免范围与其他条件重叠的最佳方法

简化的 MN 连接表

CREATE TABLE dummy (
   fkey1 int, /* omitting FK clause */
   fkey2 int,

    /* could also separate begin and end dates */
   effective_dates_of_assignment daterange,

   EXCLUDE /* WHAT GOES HERE?? */
 )
Run Code Online (Sandbox Code Playgroud)

我想要一个明显的排除规则,即如果fkey字段相同,则日期不会重叠。(如果密钥不同,则不排除。)

到目前为止,我最好的想法是添加贡献的多维数据集模块并在所有三个字段上创建一个要点多列索引。但是,尽管它看起来像一个 3D 立方体,但其中两个立方体的重叠约束将会退化。那么这里发生的是

EXCLUDE USING gist (cube([fkey1, fkey2, lower(effective_dates_of_assignment)],
                         [fkey1, fkey2, upper(effective_dates_of_assignment)])
              WITH &&)
Run Code Online (Sandbox Code Playgroud)

这个使用附加模块的解决方案对于相对常见的用例来说是否是最佳的?

postgresql date-range exclusion-constraint

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