小编jav*_*red的帖子

boost directory_iterator示例 - 如何列出不递归的目录文件

我应该如何使用directory_iterator列出目录文件(不是递归)?

我应该添加/链接什么头文件/库或我应该做的其他设置?我在我的项目中使用了boost,但directory_iterator出于某种原因是"声称不足的标识符",而我可以使用其他的boost功能.

更新

另一种方案:

#include <filesystem>
#include <boost/filesystem.hpp>
#include <iostream>

using namespace boost::filesystem;

for (directory_iterator itr(path_ss); itr!=directory_iterator(); ++itr)
{
    cout << itr->path().filename() << ' '; // display filename only
    if (is_regular_file(itr->status())) cout << " [" << file_size(itr->path()) << ']';
    cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)

boost boost-filesystem

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

DataContract和继承?

如何使用DataContract继承?代码如下工作?

[DataContract]
public class ConsoleData
{
    [DataMember]
    public String Description { get; set; }

}

[DataContract]
public class SomeData : ConsoleData
{

    [DataMember]
    public int Volume { get; set; }
    ......
Run Code Online (Sandbox Code Playgroud)

c# wcf

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

std :: chrono :: high_resolution_clock的分辨率与测量值不对应

让我通过这个测试程序问我的问题:

#include <iostream>
#include <chrono>

using std::chrono::nanoseconds;
using std::chrono::duration_cast;

int main(int argc, char* argv[])
{
    std::cout << "resolution (nano) = " << (double) std::chrono::high_resolution_clock::period::num
        / std::chrono::high_resolution_clock::period::den * 1000 * 1000 * 1000 << std::endl;

    auto t1 = std::chrono::high_resolution_clock::now();
    std::cout << "how much nanoseconds std::cout takes?" << std::endl;
    auto t2 = std::chrono::high_resolution_clock::now();


    auto diff = t2-t1;
    nanoseconds ns = duration_cast<nanoseconds>(diff);

    std::cout << "std::cout takes " << ns.count() << " nanoseconds" << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我机器上的输出:

分辨率(纳米)= 100

std :: cout需要多少纳秒? …

c++ c++11 c++-chrono visual-studio-2012

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

通过引用传递c#struct?

在我的c#应用程序中,我在callback/delegate中收到指向c ++ struct的指针.我不确定是否class可以做到这一点,但只是将c ++指针转换为适当的c#struct工作正常,所以我使用c#struct来存储数据.

现在我想传递对struct的引用以进行进一步处理

  • 我无法使用,class因为它可能不会完美地"映射"到c ++ struct.
  • 我不想复制struct以获得更好的延迟

我怎样才能做到这一点?


此示例演示struct是按值传递的,而不是通过引用传递的:

using System;

namespace TestStruct
{
    struct s
    {
        public int a;
    }

    class Program
    {
        static void Main(string[] args)
        {
            s s1 = new s
                       {
                           a = 1
                       };
            Foo(s1);
            Console.WriteLine("outer a = " + s1.a);
        }

        private static void Foo(s s1)
        {
            s1.a++;
            Console.WriteLine("inner a = " + s1.a);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

inner a = 2
outer a = 1
Run Code Online (Sandbox Code Playgroud)

c#

30
推荐指数
1
解决办法
4万
查看次数

如何锁定几个对象?

我想同时锁定两个对象.为什么我不能像这样的代码写?

锁(obj1,obj2)

我应该这样写吗?

lock (obj1)
{
    lock (obj2)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能会变得更简单吗?可能最好引入特殊的私有对象并将其用于锁...

c#

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

是否可以比使用hashmap更快地将字符串映射到int?

我知道我不应该优化我的程序的每一个位置所以请认为这个问题是"学术的"

我有每个最多100个字符串和整数,类似的东西:

MSFT 1
DELL 2
HP   4
....
ABC  58
Run Code Online (Sandbox Code Playgroud)

这个集合是预先初始化的,这意味着一旦创建它就永远不会改变.初始化set后我使用它非常密集,所以很快就能快速查找.字符串很短,最多30个字符.映射int也是有限的,介于1和100之间.

至少知道字符串是预先初始化的并且永远不会改变它应该可以"找到"导致"一篮子一项"映射的哈希函数,但可能还有其他黑客.

我能想象的一个优化 - 我只能读取第一个符号.例如,如果"DELL"是唯一以"D"开头的字符串,并且我收到了类似"D***"的内容,而不是我甚至不需要阅读字符串!它显而易见地"戴尔".这种查找必须比"hashmap lookup"快得多.(在这里,我假设我们只接收哈希中的符号,但并非总是如此)

我的问题是否有任何可以使用或易于实施的解决方案?我正在使用c ++和boost.

upd我检查并发现,对于我的交易限制,股票代码是12个符号,而不是如上所述的30个符号.然而,其他交换可能允许稍微长一些的符号,因此有一个算法可以继续处理多达20个字符长的代码,这很有意思.

c++ algorithm performance hashmap

27
推荐指数
2
解决办法
7339
查看次数

CircularBuffer高效实现(线程安全且不是线程安全的)

有人可以建议好的CircularBuffer实现吗?我需要"非线程安全"和"线程安全"版本.我希望以下操作:

  • 在创建时提供缓冲区大小的能力
  • 添加元素
  • 迭代元素
  • 迭代时删除元素
  • 可能删除元素

我希望在速度和使用内存,平均和最差时间等方面高度优化实现.

我希望"非线程安全"实现非常快.我希望"线程安全"实现很快,可能使用"无锁代码"进行同步,如果速度需要,可以有一些限制.

如果缓冲区太小而无法存储新的(添加的)元素,则可以静默覆盖现有元素或引发异常.

我应该使用disruptor.net吗?

添加链接到一个很好的示例Disruptor.NET示例

c#

26
推荐指数
1
解决办法
4万
查看次数

保证多处理器系统上的多个线程始终可以看到变量的最新值

我正在使用这样的配置:

  • .NET framework 4.5
  • Windows Server 2008 R2
  • HP DL360p Gen8(2*Xeon E5-2640,x64)

我的程序中有这样的字段:

protected int HedgeVolume;
Run Code Online (Sandbox Code Playgroud)

我从几个线程访问此字段.我假设因为我有多处理器系统,所以这个线程可能在不同的处理器上执行.

我该怎么做才能保证在任何时候我使用这个字段的最新值是"读"?并确保当我"写"值时,它立即可用于所有其他线程?

我该怎么办?

  • 只是按原样离开现场.
  • 宣布它 volatile
  • 使用Interlocked类来访问该字段
  • 使用.NET 4.5 Volatile.Read,Volatile.Write访问该字段的方法
  • 使用 lock

我只需要最简单的方法让我的程序在这个配置上工作我不需要我的程序在另一台计算机或服务器或操作系统上工作.此外,我想要最小的延迟,所以我正在寻找最快的解决方案,它将始终适用于此标准配置(多处理器intel x64,.net 4.5).

.net c# multithreading

25
推荐指数
2
解决办法
1973
查看次数

如何将int转换为uint

int 当我试图像这样转换它时,我有int变量的值:

820924

它不起作用

这不起作用

(uint)data[structure["MICROSECONDS"].Index]

我收到"指定演员表无效".例外.

数据存储unchecked((uint)data[structure["MICROSECONDS"].Index])但在运行时我应该尝试转换Specified cast is not valid..我几乎可以肯定.我已经打印了对象值object,但是我不知道如何打印对象类型,但它必须是int.

码:

object value = data[structure["MICROSECONDS"].Index];
Console.WriteLine("xx MICROSECONDS type " + value.GetType());
Console.WriteLine("xx casting " + value);
Console.WriteLine("xx cast ok" + (uint)value);
Run Code Online (Sandbox Code Playgroud)

结果:

xx MICROSECONDS type System.Int32
xx casting 820924
Run Code Online (Sandbox Code Playgroud)

c#

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

超链接与主播

何时使用HyperLink以及何时使用Anchor?

使用HyperLink时如何处理点击?不推荐使用com.google.gwt.user.client.ui.Hyperlink.addClickHandler(ClickHandler)com.google.gwt.user.client.ui.Hyperlink.addClickListener(ClickListener).

Doc建议使用Anchor#addClickHandler,但在使用HyperLink时如何使用Anchor#addClickHandler

这是否意味着如果我需要处理点击我应该总是使用Anchor,从不使用HyperLink

gwt

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