草庐IT

matrix_type

全部标签

c++ - 错误 C2011 : 'MSXML2::IXMLDOMImplementation' : 'struct' type redefinition

我正在更改我的C++项目,该项目之前在VC6中,现在正在迁移到VS2008,以使用MSXML6而不是早期的MSXML3。当代码在VC6中时,我们通过导入它来使用MSXML3#import"msxml3.dll"这被替换为#import"msxml6.dll"在此之后,当我编译项目时,我得到了这个和其他几个类似的错误错误C2011:“MSXML2::IXMLDOMImplementation”:“结构”类型重新定义以上错误在msxml3.tlh文件中。1)为什么仍然使用msxml3?2)我将问题缩小到MSXML.h,它以某种方式自动包含在我的项目中。为什么是这样?3)MSXML.h中引用

c++ - boost type_traits is_array

我一直在尝试浏览Boosttype-traitsheader,考虑到无数#define提供的强烈不可读性,现在我感到非常恶心。然后是更多#define。具体来说,我有兴趣弄清楚以下3个特征:类型T是数组、类还是枚举。任何人都可以帮助建议一些破译明显疯狂背后的方法的方法吗?比如你如何从一个类型中找出特征背后的理论,任何相关的阅读Material等。 最佳答案 is_array非常简单直接:templatestructis_array{staticconstboolvalue=false;};templatestructis_array

C++ 缓存友好方式访问 `vector <struct_type>` 的所有元素的所有成员

我有兴趣针对多线程计算优化我的代码。在缓存、流水线或内存访问的任何其他方面,以下比较如何节省这些资源:案例一structsomething{floata;floatb;intc;boold;};vectorvec(n,something());for(intq=0;q案例二structsomething{floata;floatb;intc;boold;};vectorvec(n,something());for(intq=0;q案例三vectora(n);vectorb(n);vectorc(n);vectord(n);for(intq=0;q此外,是否有更好的方法来解决上述问题?

c++ - 错误 : no type named ‘value_type’ in ‘class

我收到以下编译器错误:(graph_algorithms.h:59:111:error:notypenamed‘value_type’in‘classGraph::graph_algorithms::vertex_comparer’)这是什么意思?下一行给了我一大堆编译器错误std::priority_queue::vertex,typenameGraph::graph_algorithms::vertex_comparer>pri_que;#ifndefGRAPH_ALGORIUHMS_H_#defineGRAPH_ALGORIUHMS_H_#include#include"grap

c++ - 非类型模板参数错误 ('x' is not a type)

我正在尝试构建我friend的QT应用程序的OSX版本,他已经在Windows和Linux上构建了该应用程序。我们都在使用g++。我正在使用gcc4.2.1。不幸的是,我不知道他在构建应用程序时使用的是什么版本(这是很久以前的事了)。谁能解释一下为什么我会收到错误:../../../src/dbapi/dbcore/node.h:24:error:'dimensions'isnotatype编译以下代码时:节点.h:templateclassEXPORT_DBCORENode:publicTransform{public:Node(Idid,QString&name,QString&t

c++ - boost::单位::数量 "incomplete type"错误

我正在尝试在项目中使用boost::units但遇到了麻烦。我有一个模板类,其中有一些quantity对象作为成员。在一个中,我希望存储一个具有压力维度的值,所以我有quantitypress;声明为成员变量。然而,这给出了一个错误,指出quantity需要两个模板参数(源代码显示第二个模板参数应该默认为double)。如果我然后指定quantitypress;相反,我得到一个错误,上面写着错误:字段“press”的类型不完整。是我做错了什么还是压力的执行有问题?最小示例:#include#includeusingnamespaceboost::units;usingnamespace

张量(Tensor)、标量(scalar)、向量(vector)、矩阵(matrix)

张量(Tensor):Tensor=multi-dimensionalarrayofnumbers张量是一个多维数组,它是标量,向量,矩阵的高维扩展,是一个数据容器,张量是矩阵向任意维度的推广注意,张量的维度(dimension)通常叫作轴(axis),张量轴的个数也叫作阶(rank)]标量(scalar):只有一个数字的张量叫标量(也叫标量张量、零维张量、0D张量)x=np.array(12)print(x.ndim)可以用ndim属性来查看一个Numpy张量的轴的个数。标量张量有0个轴(ndim==0)。向量(vector):数字组成的数组叫作向量(vector)或一维张量(1D张量)。一

c++ - 保证 std::container::size_type 是一个 std::size_t

正在关注thisquestion,我决定使用std::size_t作为size_type对于每个容器,出于明显的可读性原因。我知道这在理论上是可能的std::container::size_type不是std::size_t,但我认为我当前和future的配置并非如此。但是,为了避免恶意错误,我在使用它们时会检查类型是否相同。例如:BOOST_STATIC_ASSERT(boost::is_same::size_type,std::size_t>::value);std::vectorx;/*fillx*/for(std::size_ti=0;i代码的另一个地方,我使用了一个std::

C++, Linux : error: conversion from ‘boost::unique_future<void>’ to non-scalar type ‘boost::shared_future<void>’ requested. 如何绕过它?

我尝试使用boostthreadfutures.所以如图here我们可以得到sharedfuture来自packagedtask.所以我在linux上尝试这样的功能:templatevoidpool_item(boost::shared_ptr>pt){boost::shared_futurefi=pt->get_future();//error//...但调用它时出错:../../src/cf-util/thread_pool.h:Inmemberfunction‘voidthread_pool::pool_item(boost::shared_ptr>)[withtask_retu

C++11 : How can I define a function that accept a universal reference of a specific type of object?

问题:我正在用C++11开发一个程序。我想编写一个接受右值引用和左值引用的函数。(即通用引用)。以下函数接受通用引用参数:templatevoidfunction(T&&t){/*SNIP*/}但是,它接受所有类型的参数。它破坏了函数的类型安全。想让它接受特定类型的参数怎么办?这是我能想到的解决方案:voidfunction(Class&t){/*SNIP*/}voidfunction(Class&&t){function(t);}然而,它很丑陋。如果我想更改要接受的参数或更改函数名称,我必须更新函数的两个版本。有比这更好的等价物吗?编辑:问题已解决。你们都回答得很好。我对两个答案都投