小编Any*_*orn的帖子

C++标准/事实上的STL算法包装器

是否存在标准算法的标准/事实标准(boost)包装器,它们与定义开始和结束的容器一起使用.让我告诉你我对代码的意思:

// instead of specifying begin and end
std::copy(vector.begin(), vector.end(), output);
// write as
xxx::copy(vector, output);
Run Code Online (Sandbox Code Playgroud)

我知道它可以很容易地写出来,但我正在寻找一种无处不在的东西.谢谢.

c++ algorithm containers boost wrapper

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

检测整数溢出

我正在使用一个大型C库,其中使用了一些数组索引int.我需要找到一种在运行时捕获整数溢出的方法,以便缩小到有问题的代码行.Libc手册说明:

FPE_INTOVF_TRAP整数溢出(在C程序中不可能,除非您以特定于硬件的方式启用溢出捕获).

但是gcc选项-ffpe-trap表明那些只适用于FP数字?
那我怎么做启用整数溢出陷阱?我的系统是Xeon/Core2,gcc-4.x,Linux 2.6

我已经查看了类似的问题,但他们都很熟悉修改代码.我需要知道哪个代码首先是有问题的.
如果Xeons无法捕获溢出,哪些处理器可以?我也可以访问非emt64机器.

我找到了一个专为llvm设计的工具:http: //embed.cs.utah.edu/ioc/ 似乎没有gcc/icc的等价物?

c debugging operating-system

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

你使用哪些C++逻辑运算符:和,或者不是和类型的运算符?为什么?

标题中隐含的休闲/好奇心问题.

我个人更喜欢新操作符,以便在我看来使代码更具可读性.

哪些人自己使用?你选择一个而不是另一个的原因是什么?

此外,Emacs以不同的方式突出显示这些运算符,以便在查看屏幕时获得更多视觉反馈.我知道旧操作符也可以突出显示,但ISO646默认突出显示

c++ survey operators

7
推荐指数
3
解决办法
2584
查看次数

C++专用模板继承自非专用版本

我试图解决问题,但找到了不同的解决方案.但出于好奇,想知道以下是否可行:

template< class > struct S;
template< > struct S< Foo > : struct< Foo > {};
Run Code Online (Sandbox Code Playgroud)

我希望能够从专门的struct继承非专用结构.上面的例子不起作用,因为继承的结构是专用的,导致无限递归.

一种可能的解决方案是添加第二个模板参数,比如bool special,这样默认值为false,而专用模板的参数为true.但是,由于实例化需要指定其他参数,因此会使事情变得有点混乱.

有没有其他方法来实现上述?

最初的问题是实现矩阵矩阵,其中矩阵本身可能有额外的运算符,这取决于组成矩阵是否有那些运算符.我希望这是有道理的.同时,不同的专用矩阵需要具有相同的基类,同时保留相同的名称,尽管具有不同的模板参数.我以为可能有办法使用enable_if和type traits

c++ inheritance templates

7
推荐指数
2
解决办法
2272
查看次数

C++域特定的嵌入式语言运算符

在面向数字的语言(Matlab,Fortran)中,范围运算符和语义在处理多维数据时非常方便.例如:

A(i:j,k,:n) // represents two-dimensional slice B(i:j,0:n)  of A at index k
Run Code Online (Sandbox Code Playgroud)

遗憾的是,C++没有范围运算符(:).当然它可以使用范围/切片仿函数进行仿真,但语义不如Matlab干净.我在C++中使用矩阵/张量域语言进行原型设计,我想知道是否有任何选项可以重现范围运算符.我仍然只想依赖C++/prprocessor框架.

到目前为止,我已经查看了可能是合适选项的增强波.

还有其他方法可以将新的非本地运营商引入C++ DSL吗?

我知道你不能添加新的operator.am专门寻找解决方法.我提出的一件事(非常丑陋的黑客,我不打算使用):

#define A(r) A[range(((1)?r), ((0)?r))] // assume A overloads []
A(i:j); // abuse ternary operator
Run Code Online (Sandbox Code Playgroud)

c++ dns dsl operators dsel

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

整数除法属性

是否保持以下整数算术属性?

(m/n)/l == m/(n*l)
Run Code Online (Sandbox Code Playgroud)

起初我以为我知道答案(不成立),但现在不确定.它适用于所有数字还是仅适用于某些条件,即n > l

问题涉及计算机算术,即q = n/m, q*m != n忽略溢出.

theory algorithm integer division

7
推荐指数
2
解决办法
944
查看次数

C++常量临时生命周期

如果这样的代码是正确的(根据标准),你能告诉我:

struct array {
    int data[4];
    operator const int*() const { return data; }
};

void function(const int*) { ... }

function(array()); // is array data valid inside function?
Run Code Online (Sandbox Code Playgroud)

谢谢

c++

7
推荐指数
2
解决办法
246
查看次数

C++,最佳实践,int或size_t?

可能重复:
何时使用std :: size_t?

你好.

假设使用模式相同(即没有负数),最好用于各种索引,int或者size_t输入?

两者之间64位英特尔的体验是否存在性能差异?

谢谢

c++ performance

7
推荐指数
3
解决办法
8768
查看次数

我现在应该使用C++ 11 lambdas吗?

这是我的困境:我真的很喜欢lambda,并且一直在使用Boost.Fusion和Phoenix.它们非常成熟,可以很好地兼顾许多编译器.

C++ 11 lambdas怎么样?它们非常好用,然后更容易使用,然后提升替代品(没有更多的仿函数!).最近的ICC和GCC编译器支持它们.但是仍然有很多ICC 9.x和GCC 4.1及以下系统,更不用说XL和Sun编译器了.这些编译器是否提供lambda支持?

我倾向于认为也许我应该等待使用C++ 11功能,以免旧系统拒绝代码.你怎么看?等到较旧的编译器逐渐消失或者只是这样做?

c++ lambda c++11

7
推荐指数
2
解决办法
557
查看次数

GCC隐藏/鲜为人知的功能

这是我尝试开始通常不会遇到的GCC特殊功能的集合.这是在@jlebedev之后的另一个问题中提到的g ++的"Effective C++"选项,

-Weffc ++这个选项警告C++代码,它违反了Scott Meyers的"Effective C++"和"More Effective C++"一书中给出的一些编程指南.例如,如果使用动态分配的内存的类没有定义复制构造函数和赋值运算符,则会给出警告.请注意,标准库头文件不遵循这些准则,因此您可能希望使用此选项作为对您自己的代码中可能出现的问题的偶然测试,而不是一直使用它进行编译.

还有哪些很酷的功能?

gcc

7
推荐指数
2
解决办法
609
查看次数