小编Bo *_*son的帖子

使用自定义删除器提升scoped_ptr/scoped_array

我没有看到如何让scoped_ptrscoped_array使用自定义删除器.也许有另一种实现允许类似于shared_ptr的受控删除?

顺便说一句,为什么shared_ptr允许自定义删除但scoped_ptr不允许?只是好奇.

c++ boost smart-pointers

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

如何优化矩阵乘法运算

我需要在我的应用程序中执行大量的矩阵运算.最耗时的是矩阵乘法.我这样实现了它

template<typename T>
Matrix<T> Matrix<T>::operator * (Matrix& matrix)
{


    Matrix<T> multipliedMatrix = Matrix<T>(this->rows,matrix.GetColumns(),0);

    for (int i=0;i<this->rows;i++)
    {
        for (int j=0;j<matrix.GetColumns();j++)
        {
            multipliedMatrix.datavector.at(i).at(j) = 0;
            for (int k=0;k<this->columns ;k++)
            {
                multipliedMatrix.datavector.at(i).at(j) +=  datavector.at(i).at(k) * matrix.datavector.at(k).at(j);
            }
            //cout<<(*multipliedMatrix)[i][j]<<endl;
        }
    }
    return multipliedMatrix;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法以更好的方式写它?到目前为止,矩阵乘法运算占用了我的应用程序的大部分时间.也许是有好/快的库来做这种事情?但是我宁愿不能使用使用图形卡进行数学运算的库,因为我在带有集成显卡的笔记本电脑上工作.

c++ matrix matrix-multiplication

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

C++函数接收枚举作为其参数之一

我试图使一个函数接收枚举作为其参数之一.我把枚举作为一个全局但由于某种原因我的其他文件无法改变枚举.所以我想知道如何将枚举设置为函数的参数,如

function(enum AnEnum eee);
Run Code Online (Sandbox Code Playgroud)

还是有更好的方法来解决上述问题?

好的,快速改写我的问题:我基本上有很多文件,我希望他们所有人都可以访问我的枚举,并能够更改该枚举的状态,而且应该能够访问它的大多数文件都在类.我试图解决这个问题的方法是将枚举传递给需要访问它的函数,我无法弄清楚如何使函数接收枚举作为其参数之一.

c++ enums

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

实例化中为NULL

在编写C++时,我们假设以下代码行:

Object* obj = new Object(); 
Run Code Online (Sandbox Code Playgroud)

如果这一行既编译并且不会导致异常或任何其他可见的运行时问题,那么在执行此行之后obj是否为NULL?

c++ null

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

如何在Mathematica中真正实现BarSpacing选项?

我正在尝试实现一个DateListBarChart函数,该函数采用过时数据并输出具有相同位置的条形图DateListPlot.如果给定相同的数据,他们必须将数据绘制在相同的水平位置,因此可以使用它们进行组合Show.我发现很难得到BarSpacing正确的设置,以便绘图的水平范围不会改变,并且条形基本上保持在相同的位置.

我无法推断出正确的比例,因此BarSpacing->{0.2,0.3}可以获得该组条的可用x轴长度的20%与该组中条之间的间距,以及30%作为条组之间的间距.由于技术原因,我通过将事情传递给我RectangleChart.根据文件,BarSpacing被视为绝对单位RectangleChart.显然,如果有更多的系列,间隙的绝对尺寸需要更小,并且条形需要更窄.

一些例子:

arList = FoldList[0.9 #1 + #2 &, 0.01, RandomReal[NormalDistribution[0, 1], 24]]

{0.01, 0.334557, 2.02709, 1.1878, 1.9009, 3.08604, 2.36652, 3.04111, 
3.32364, 3.22662, 3.12626, 2.59118, 1.69334, 1.21069, 0.23171, 
0.689415, -0.852649, -0.124624, 0.58604, -0.481886, 0.221074, 
-0.300329, 2.36137, 0.427789, -1.47747}

dists = RandomChoice[{3, 4}, Length[arList]]
{4, 4, 4, 3, 4, 3, 4, 3, 4, 4, 3, 4, 4, 3, 4, 4, 4, 4, 3, 4, …
Run Code Online (Sandbox Code Playgroud)

plot wolfram-mathematica bar-chart

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

F#有什么像Haskell的where子句吗?

我想知道F#中是否有像Haskell的where条款那样的东西.它将允许转换以下代码

let roulleteWheel numberGenerator (scoredPopulation:ScoredPopulation) =
  let targetScore =
    let totalScore = totalPopulationFitness scoredPopulation
    Seq.head (numberGenerator 0.0 totalScore)

  let isMatch (score, accumulatedScore) =
    if (accumulatedScore >= targetScore) then
      Some(score)
    else
      None

  let accumulatedScores =
    let scores = Seq.map (fun (_, score) -> score) scoredPopulation
    Seq.skip 1 (Seq.scan (+) 0.0 scores)

  Seq.pick isMatch (Seq.zip scoredPopulation accumulatedScores)
Run Code Online (Sandbox Code Playgroud)

进入(imo)稍微可读的版本

let roulleteWheel numberGenerator (scoredPopulation:ScoredPopulation) =
  Seq.pick isMatch (Seq.zip scoredPopulation accumulatedScores)
  where
    let targetScore =
      let totalScore = totalPopulationFitness scoredPopulation
      Seq.head (numberGenerator 0.0 …
Run Code Online (Sandbox Code Playgroud)

.net f# functional-programming

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

MS Research Chess的替代方案?

MS Research CHESS库是否可以替代单元测试.net多线程应用程序?

.net multithreading unit-testing

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

用于创建ASP.NET成员资格提供程序用户的脚本

我创建了一堆插入脚本,以便将新用户添加到aspnet_Membership和aspnet_User表中.我不能认证,说它找不到我的用户.

有没有人试图通过T-SQL插入创建新的成员资格用户?我必须这样做,因为我们在C#/ ASP.NET中创建用户代码目前不起作用.

t-sql asp.net asp.net-membership membership-provider

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

C++本地类作为仿函数

我试图使用本地类作为函子并使用g ++(3.4.6)获得编译器错误.

将下面的class(Processor)放在全局范围内可以解决错误,所以我猜错误是因为函数本地结构/类.我更喜欢在函数内部使用类,以实现代码清晰度和易用性.想知道是否有解决方法使下面的代码有效.

test.cpp:24:错误:没有匹配函数来调用\ u2018foreachArg(int&,char*&,processSubs(int,char*):: Processor&)\ u2019

template <class Functor>
void foreachArg(int n, char *args[], Functor& f)
{
    for(int i=0; i<n; ++i)
        f(args[i]);
}

int processSubs(int argc, char *args[])
{
    class Processor
    {
        public:
            void operator()(const char *arg)
            {
            }
    };

    Processor p;
    foreachArg(argc, args, p);
}

int main(int argc, char *argv[])
{
    processSubs(argc, argv);
}
Run Code Online (Sandbox Code Playgroud)

c++

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

是否将数组参数传递给函数而不是常量指针?

考虑一下代码:

void foo(char a[]){
   a++;            //  works fine, gets compiled
   //... 
}
Run Code Online (Sandbox Code Playgroud)

现在,考虑一下:

void foo(){
   char a[50];
   a++;            //  Compiler error
   //... 
}
Run Code Online (Sandbox Code Playgroud)

我听说一个数组相当于一个常量指针,不能递增,因为它不是一个左值...

那么为什么第一个代码被编译,是这样的,因为函数的数组参数作为指针传递,即T []被转换为T*以传递..所以,foo(a)传递一个作为指针.

但它是否再次转换为T [],因为声明为:

void foo(char a[]);
Run Code Online (Sandbox Code Playgroud)

c c++ arrays pointers

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