小编Gio*_*hal的帖子

SVG 到黑白

我希望能够将 SVG 文档转换为黑白。我的尝试是使用 'sed' 的以下 Makefile 脚本:

%.bw.svg: %.svg
    sed '/stroke:none/!s/stroke:[^;\"]*/stroke:black/g' $< > $@
Run Code Online (Sandbox Code Playgroud)

这适用于线条等,但不适用于填充物。基本上,如果笔触不可见(无),那么我将其转换为黑色。我想对填充物做同样的事情,如果不是白色或不可见,则转换为黑色。

我想知道以更好的方式做这样的事情是否太复杂,也许使用 XSLT,但我没有经验。任何人都可以帮忙吗?

python xslt awk svg sed

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

Java通用捕获和可比较

这是一个容器的实现,可以与具有兼容键的任何其他容器进行比较.我在Java中使用泛型有一个奇怪的错误,任何想法?

    private static class Container
    <Key extends Comparable<? super Key>, Value>
    implements Comparable<Container<? super Key, ?>> 
    {
        public Key key;
        public Value value;
        public Container(Key k, Value v) {
            key = k;
            value = v;
        }
        public int compareTo(Container<? super Key, ?> o) {
            return key.compareTo(o.key);
        }
    }
    ...
Run Code Online (Sandbox Code Playgroud)

这是错误:

    compareTo(capture#98 of ? super Key) in
    java.lang.Comparable<capture#98 of ? super Key> cannot be applied to 
    (java.lang.Comparable<? super capture#822 of ? super Key>)
            return key.compareTo(o.key);
                      ^
    1 error
Run Code Online (Sandbox Code Playgroud)

java generics

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

我可以将std :: array转换为切片吗?或者还有什么我可以使用的吗?

这是未定义的行为吗?

std::array<int, 5> x = {3, 5, 1, 2, 3};
std::array<int, 3>& y = *reinterpret_cast<std::array<int, 3>*>(&x[1]);
for(int i = 0; i != 3; i++) {
    std::cout << y[i] << "\n";
}
Run Code Online (Sandbox Code Playgroud)

也许是的,但我真的觉得应该有一个安全的方法来切片std::array.

编辑:按照拉德克的建议:

template<unsigned N, unsigned start, unsigned end, typename T>
std::array<T, end - start>& array_slice(std::array<T, N>& x)
{
    static_assert(start <= end, "start <= end");
    static_assert(end <= N-1, "end <= N");
    return *reinterpret_cast<std::array<T, end - start>*>(&x[start]);
}
Run Code Online (Sandbox Code Playgroud)

编辑:好的,我决定我对std::arrays 不满意,并会转向其他任何想法?

c++ arrays stl c++11

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

无锁和无阻塞有什么区别?

在数据结构同步的背景下,有人可以澄清"无锁"和"非阻塞"之间的区别吗?这些术语似乎可以被很多人互换使用,但我还不确定某个地方是否隐藏着一些微妙的差异.

我的意思是无锁是"没有锁",非阻塞更像是保证进步.我怀疑一个暗示另一个而不是相反,我不确定.

参考文献欢迎.

synchronization locking nonblocking lock-free

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

C++:继承问题

我很难解释我正在尝试做什么,我会尝试:想象一个class A包含一些变量的基类,以及一组派生的类,A它们都实现了一些bool test()对继承的变量进行操作的方法A.

class A {
   protected:
   int somevar;
   // ...
};

class B : public A {
   public:
   bool test() {
      return (somevar == 42);
   }
};

class C : public A {
   public:
   bool test() {
      return (somevar > 23);
   }
};

// ... more classes deriving from A
Run Code Online (Sandbox Code Playgroud)

现在我有一个实例,class A并设置了值somevar.

int main(int, char* []) {
    A a;
    a.somevar = 42;
Run Code Online (Sandbox Code Playgroud)

现在,我需要某种容器,允许我迭代i这个容器的元素,i::test()在...的上下文中调用 …

c++ inheritance

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

调车场:运营商缺少参数

我正在实施分流码算法.我在检测运营商缺少参数时遇到问题.在维基百科条目是非常糟糕的这个话题,和他们的代码也崩溃了下面的例子.

例如3 - (5 + )是不正确的,因为+缺少一个参数.

就在算法到达之前),运算符堆栈包含- ( +并且操作数堆栈包含3 5.然后它是这样的:

  • +从操作员堆栈中弹出
  • 发现这+是一个二元运算符
  • 弹出两个操作数,应用运算符并将result(8)推送到操作数堆栈
  • 然后它(从堆栈中弹出匹配,然后继续

那么如何才能发现+缺少一个参数呢?额外的荣誉,如果你也更新维基百科:-)

c++ algorithm parsing wikipedia shunting-yard

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

静态const的地址不是const表达式?

我虽然静态地址是一个常量表达式,如下例所示,但我得到一个编译器错误(或者这是C++ 0x的新增内容?)

class X {
    static const int x;
    enum { y = &x };
};
Run Code Online (Sandbox Code Playgroud)

c++ static constant-expression

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

使用动态分配为大约10000个变量存储布尔信息的内存有效方法

我需要存储大约10000个变量的布尔信息.首先我想到使用bool数组arr [10000],但需要40000个字节.但我需要以有效的内存方式存储这些信息.也许使用位操作?还需要另外一件事我需要全局存储它并动态分配它.你能帮我解决这个问题吗?

c c++ memory-management

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

C++回调,模板成员?

以下代码不起作用,但它表达了我想做的事情.模板结构容器存在问题,我认为应该这样做,因为它的大小对于任何模板参数都是已知的.

class callback {

  public:

  // constructs a callback to a method in the context of a given object
  template<class C>
  callback(C& object, void (C::*method)())
    : ptr.o(object), ptr.m(method) {}

  // calls the method
  void operator()() {
    (&ptr.o ->* ptr.m) ();
  }

  private:

  // container for the pointer to method
  template<class C>
  struct {
    C& o;
    void (C::*m)();
  } ptr;

};
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情?我的意思是有一个非模板类回调,它包装任何指向方法的指针?

谢谢C++大师!

编辑:

请看这个:

C++回调,模板成员?(2)

c++ templates callback pointer-to-member

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

C++回调,模板成员?(2)

以下回调类是"可调用事物"的通用包装器.我真的很喜欢它的API,它没有模板而且非常干净,但是引擎盖下有一些我无法避免的动态分配.

在维护回调类的语义和API的同时,有没有办法摆脱下面的代码中的newdelete?我真的希望我能.


需要的东西:

// base class for something we can "call"
class callable {
  public:
  virtual void operator()() = 0;
  virtual ~callable() {}
};

// wraps pointer-to-members
template<class C>
class callable_from_object : public callable {
  public:
  callable_from_object(C& object, void (C::*method)())
         : o(object), m(method) {}

  void operator()() {
    (&o ->* m) ();
  }
  private:
  C& o;
  void (C::*m)();
};

// wraps pointer-to-functions or pointer-to-static-members
class callable_from_function : public callable {
   public:
   callable_from_function(void (*function)())
         : f(function) {}

   void …
Run Code Online (Sandbox Code Playgroud)

c++ templates memory-management callback pointer-to-member

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

编写AI:屏幕截图和输入

我正在考虑一个宠物项目,为Windows上的简单游戏编写AI(C++/python首选).你能指导我抓住简单的屏幕截图是什么方式,这样我就可以做一些非常简单的物体识别/基本上找出这样的像素颜色.

而且我还需要管理输入(移动鼠标,点击等)?我主要是一个linux家伙,所以我打赌在这里我需要使用一些DirectX API来注入事件?

谢谢

c++ python windows directx artificial-intelligence

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

打开目录列表/文件的vim插件

我正在寻找类似于http://www.vim.org/scripts/script.php?script_id=1325的vim插件,其中包含一个目录列表,您可以在其中选择要打开的文件.这存在于某个地方吗?自己无法找到它.

vim editor

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