草庐IT

double-brace-initialize

全部标签

c++ - vector< vector <double>> 与 swig 和 python 的参数

我正在尝试弄清楚如何使用SWIG包装一个将2dvector返回给python的c++函数。我有文件functions.h#includestd::vector>array_mean(std::vector>array){std::vector>mean_array(rows,std::vector(cols));....returnmean_array;}在接口(interface)文件functions.i中有%modulefunctions%{#include"functions.h"%}%include"std_vector.i"namespacestd{%template(Ve

c++ - initializer_list 和参数相关的查找

我正在尝试将std::initializer_list用作使用参数相关查找(ADL)的函数中的参数。但我没有让它工作,我不明白为什么。以下是一个最小的失败示例:#include#includeclassFoo{public:inlinefriendvoidbar(std::initializer_listv){std::coutv){std::cout如上所示,等效的全局函数工作得很好。为什么以上不起作用?我在OSX10.10上使用clang。 最佳答案 我认为问题在于子表达式1{a,a}没有真正的类型,因此它没有关联的类型或命名空

c++ - 有没有办法在编译时检查 std::initializer_list 参数的数量?

我正在尝试创建一个可以接受多个给定类型参数的函数,但是参数的类型和数量都应该通过模板指定。我发现在这种情况下使用C++11的initializer_list可能是一个很好的技术,但是是否可以在编译时检查它的大小?有没有其他技术可以解决这个问题?#include//HereIwanttodefinetypeandnumberofcomponentsforeachpointtemplateclassGeometry{public:voidaddPoint(std::initializer_listcoords){assert(coords.size()==DIM);//Workinggoo

c++ - 乘以 float 并保持/获得 double 精度

我有一个接受float的函数,我正在用它们做一些计算,我想尽可能保持返回结果的准确性。我读到,当您将两个float相乘时,有效数字的数量就会翻倍。所以当两个float相乘时,例如floate,f;我做doubleg=e*f,位何时被截断?在我下面的示例函数中,我是否需要强制转换,如果需要,在哪里?这是一个紧密的内部循环,如果我把static_cast(x)围绕每个变量abcd在使用它的地方,我会减速5-10%。但我怀疑我不需要单独转换每个变量,而且只需要在某些位置转换,如果有的话?还是在这里返回一个double不会给我任何yield,我也可以只返回一个float?doublefunc(

c++ - 我可以在不使用原始指针的情况下避免在 std::initializer_list 初始化期间进行复制吗?

假设我有几个在本地声明的对象,我想使用基于范围的for语法对其进行迭代。这似乎运作良好,但是,似乎要将本地对象放入initializer_list,执行复制。这对于像std::shared_ptr这样的对象来说是个坏消息,据我所知,增加引用计数是一个原子操作。我认为可以避免这种情况的唯一方法是使用原始指针。#include#includeintmain(){std::shared_ptrptrInt1=std::make_shared(1);std::shared_ptrptrInt2=std::make_shared(2);/*inthisloop,ptrInt1andptrInt2

c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略

您好,在此先感谢您对以下问题的任何帮助。编辑:我忘了补充一点,这是在无法访问STL功能的嵌入式系统上。我很抱歉遗漏了这条非常重要的信息。这是我第一次广泛使用C++进行编码,所以我忘了提及显而易见的事情。我回来补充这个事实,这个问题已经收到了一些回复。感谢大家这么快的回复!我正在尝试初始化结构的数组成员,该结构又是C++类的公共(public)成员。结构中省略了数组大小。这是一个例子://ClassA.hClassA{public:structStructA{StructBstructs[];};structStructB{//stuff};ClassA();//etc};//Class

c++ - 输出精度高于 double

我正在打印C++程序中的一些数据,以供ParaView处理/可视化,但我遇到了float问题。Paraview支持Float32和Float64两种数据类型。Float64相当于典型限制+/-1.7e+/-308的double。但是,我的代码正在打印像6.5e-318这样的数字。这在读取数据时会在ParaView中抛出错误。我已经验证将这些小数字四舍五入为零会使ParaView中的错误消失。我不确定为什么我有如此“高精度”的输出,可能是因为一些数字的存储精度高于double。例如,以下代码在我的系统上重现了相同的行为:#includeintmain(void){constdoublev

c++ - initializer_list 和默认构造函数重载决议

#include#includeusingnamespacestd;structY{};structX{X(initializer_list){cout这会打印出“boo”。为什么它不打印出“yay”?无论如何要区分以下两种结构:X()X{}或returnX();返回{};或voidg(constX&)g(X())g({})谢谢。 最佳答案 Isthereanywaytodifferentiatethefollowingtwoconstructions:没有。它们不是不同的结构。{}构造函数语法的主要目的是引入统一初始化,让初始化工

c++ sizeof operator - 指向double的指针

我在使用sizeof运算符(C++)时得到了意想不到的结果。在主课中,我有这些行double*arguments_=newdouble();*arguments_=2.1;*(arguments_+1)=3.45;cout这给我输出480Doublesize是8个字节,而且(sizeofarguments_[0])=8。但是,为什么(sizeofarguments_)也不是用字节表示的(2*8=16)?sizeof运算符是否适用 最佳答案 两个值都以相同的单位表示。你有一个32位系统,所以地址的大小是32位,或4个字节。在你的系统上

c++ - 如何将 double 舍入到 n 位小数?

这个问题在这里已经有了答案:Roundafloattoaregulargridofpredefinedpoints(11个答案)关闭5年前。我试图在标准库中找到一个round函数,但没有找到。有没有办法在C++中将double舍入为n位小数?