小编MSa*_*ers的帖子

如何在两个容器的元素之间执行成对二进制操作?

假设我有两个std::vector<uint_32> a, b;我知道具有相同大小的向量.

是否有一个C++ 11范式做一个bitwise-AND所有成员之间ab,并把结果std::vector<uint_32> c;

c++ algorithm libstdc++ c++11

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

c ++字符串是否可变UNLIKE Java字符串?

以这种方式在c ++中操作字符串是可以的:

string s = "Sting";
s[2] = 'a';
Run Code Online (Sandbox Code Playgroud)

它工作正常(并打印'Stang'),但这样做是否安全?

如果是,这是否意味着它们是可变的?

c++

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

C++标准库:如何为cout,cerr,cin和endl编写包装器?

我不喜欢using namespace std,但我也厌倦了键入std::在每一条战线cout,cin,cerrendl.所以,我想给他们这样简短的新名字:

// STLWrapper.h

#include <iostream>
#include <string>

extern std::ostream& Cout;
extern std::ostream& Cerr;
extern std::istream& Cin;
extern std::string&  Endl;

// STLWrapper.cpp

#include "STLWrapper.h"

std::ostream& Cout = std::cout;
std::ostream& Cerr = std::cerr;
std::istream& Cerr = std::cin;
std::string _EndlStr("\n");
std::string& Endl = _EndlStr;
Run Code Online (Sandbox Code Playgroud)

这有效.但是,上面有什么问题我错过了吗?有没有更好的方法来实现同样的目标?

c++ iostream

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

是否有一个可以从C++调用的好的图形布局库?

(有向)图表代表有限自动机.到目前为止,我的测试程序已经写出了用于测试的点文件.这对于回归测试(将验证的输出文件保存在subversion中,询问是否存在更改)和可视化都非常好.但是,有一些问题......

基本上,我想要一些可以从C++中调用的东西,它可以为我的状态和过渡计划一个布局,但是将绘图留给我 - 这将允许我绘制我想要的东西并在GUI(wxWidgets)窗口上绘制.

我还想要一个允许商业用途的许可证 - 我目前不需要它,我可能很好地作为开源发布,但我不想限制我的选择ATM.

GraphViz的问题是(1)关于在Windows上从源构建的警告,(2)用于呈现和解析的所有不必要的依赖性,以及(3)(假定的)缺少具体且纯粹用于布局的文档API.

基本上,我希望能够指定我的状态(具有边界矩形大小)和过渡,并读出每个过渡的状态和航点的位置,然后基于这些坐标自己绘制.我还没有弄清楚应该如何处理转换上的注释,但应该有一些规定来为那些指定边界框大小,将它们与转换相关联,以及读出位置.

有谁知道可以处理这些要求的库?

我不一定反对为自己实施某些东西,但在这种情况下,如果可能的话,我宁愿避免它.

c++ layout automata directed-graph

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

复制在std向量中只出现一次的元素的最有效方法是什么?

我有一个std向量与这样的元素:

[0 , 1 , 2 , 0 , 2 , 1 , 0 , 0 , 188 , 220 , 0 , 1 , 2 ]
Run Code Online (Sandbox Code Playgroud)

找到并复制在此向量中仅出现一次的元素的最有效方法是什么,不包括强力O(n ^ 2)算法?在这种情况下,新列表应包含[188, 220]

c++ stdvector c++11

15
推荐指数
2
解决办法
602
查看次数

有没有建议将std :: bin添加到c ++标准?

C++ 14通过0b为值键入prefix来增加使用二进制文字的能力:

int v = 0b1111; // 15 in decimal
Run Code Online (Sandbox Code Playgroud)

但是没有std::bin类似std::hex或者流的操纵器std::oct.所以我需要std::bitset用于打印目的:

std::cout << std::bitset<4>(v) << "\n";
Run Code Online (Sandbox Code Playgroud)

是否已提出或考虑过?如果是这样,这个想法的现状是什么?

c++ binary language-lawyer c++14

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

问题与is_copy_constructible

类型特征是否应该能够处理诸如std::vector < std::unique_ptr <int> >并且检测到它不是可复制构造的情况?

以下是https://ideone.com/gbcRUa(运行g ++ 4.8.1)的示例

#include <type_traits>
#include <vector>
#include <iostream>
#include <memory>

int main()
{
    // This prints 1, implying that it's copy constructible, when it's clearly not
    std::cout << std::is_copy_constructible< std::vector<std::unique_ptr<int> > >::value << std::endl; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果这是正确的行为is_copy_constructible,有没有办法检测复制结构是否形成错误?好吧,除了让它无法编译之外.

c++ type-traits c++11 g++4.8

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

SFINAE检查操作员+ =

我试图消除过载集中的重载(如果operator+=缺少).

我知道如何检查是否T+T合法:

template<typename T,
         typename CheckTplusT = decltype(std::declval<T>() + std::declval<T>())>
void foo(T a, T b, ...)
{
  a = a + b;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用 +=

template<typename T,
         typename CheckTplusT = decltype(std::declval<T>() += std::declval<T>())>
void foo(T a, T b, ...)
{
  a += b;
}
Run Code Online (Sandbox Code Playgroud)

这可以通过在内部使用另一个表达式来修复,decltype还是需要另一个SFINAE构造?

我需要从重载集中消除它的原因是它与另一个重载冲突,它接受一个functor用作替代+=.编译器是VS2013,gcc4.8

c++ sfinae

14
推荐指数
2
解决办法
823
查看次数

用于绘制流程图或定向图的免费C++库?

我想在我的程序中嵌入一个绘制画布的流程图.用户可以:

  • 绘制"节点"(矩形节点就足够了)和"边缘"(最好是正交)来连接"节点";
  • 使用鼠标拖动节点进行布局并调整矩形大小;
  • 用鼠标选择一个或多个节点进行删除,复制,粘贴等;
  • 通过鼠标选择一个或多个节点来编辑它们的预定义属性(体积,温度,压力等).
  • 改变颜色(可选)
  • 向/从文件保存/读取数据.

绘图后,程序只需要获取连接逻辑(在数据结构中像Directed图)和属性进行进一步计算.

是否有任何免费或开源的C++库来执行此操作?(不需要跨平台,在Windows中可用就足够了.)

c++ directed-graph graph-drawing

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

是否有Windows API来检测USB过流?

我正在尝试编写一个应用程序,当它检测到任何USB端口上的过流情况时将采取特定操作.

但是,我的googlefu无法提供任何有用的东西(尽管我现在可以告诉你101种修复USB过流问题的方法).

是否有标准的Windows API来检索USB状态信息?
如果没有,是否有其他/更好的方法以编程方式检测USB过流情况?

c c++ windows usb

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