小编Nic*_*ick的帖子

初始化我的数组的快速方法

我有一个int数组,我必须使用值-1初始化此数组.现在我使用这个循环:

int i;
int myArray[10];

for(i = 0; i < 10; i++)
    myArray[i] = -1;
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

c

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

在图像上绘制矩形

我想在一个Image上绘制一些Rectangle.

例如,我有以下(白色和黑色)船舶配置文件,我想在特定位置的此配置文件上添加一些(黄色和红色)矩形:

在此输入图像描述

可能吗?我怎样才能做到这一点?

.net wpf image

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

如果T在泛型中无效怎么办?如何省略尖括号

我有一个这种类:

class A<TResult>
{
     public TResult foo();
}
Run Code Online (Sandbox Code Playgroud)

但有时我需要将此类用作非泛型类,即类型TResultvoid.
我无法通过以下方式实例化该类:

var a = new A<void>();
Run Code Online (Sandbox Code Playgroud)

另外,我宁愿不指定省略尖括号的类型:

var a = new A();
Run Code Online (Sandbox Code Playgroud)

我不想重写全班,因为它做同样的事情.

c# generics void

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

std :: string stream以二进制格式解析数字

我需要解析std::string包含二进制格式的数字,例如:

0b01101101
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用std :: hex格式说明符来解析十六进制格式的数字.

std::string number = "0xff";
number.erase(0, 2);
std::stringstream sstream(number);
sstream << std::hex;
int n;
sstream >> n;
Run Code Online (Sandbox Code Playgroud)

是否存在二进制格式的等价物?

c++ format binary stringstream c++11

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

性能随着线程数量的增加而降低(无同步)

我有一个数据结构(向量),元素必须由函数解析,其中元素可以由不同的线程解析.

以下是解析方法:

void ConsumerPool::parse(size_t n_threads, size_t id)
{
    for (size_t idx = id; idx < nodes.size(); idx += n_threads)
    {
        // parse node
        //parse(nodes[idx]);
        parse(idx);
    }
}
Run Code Online (Sandbox Code Playgroud)

哪里:

  • n_threads 是线程的总数
  • id 是当前线程的(单义)索引

并创建如下线程:

std::vector<std::thread> threads;

for (size_t i = 0; i < n_threads; i++)
    threads.emplace_back(&ConsumerPool::parse, this, n_threads, i);
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使这种方法有效,如果线程数太高,我的应用程序的性能也会降低.我想了解为什么即使这些线程之间没有同步,性能也会降低.

以下是根据使用的线程数经过的时间(线程开始和最后一次join()返回之间):

  • 2个主题:500毫秒
  • 3个主题:385毫秒
  • 4个主题:360毫秒
  • 5个主题:475毫秒
  • 6个主题:580毫秒
  • 7个主题:635毫秒
  • 8个主题:660毫秒

创建线程所需的时间始终在1/2 ms之间.该软件已使用其发布版本进行了测试.以下是我的配置:

2x Intel(R) Xeon(R) CPU E5507 @ 2.27GHz

Maximum speed:  2.26 GHz
Sockets:    2
Cores:  8
Logical processors: 8
Virtualization: …
Run Code Online (Sandbox Code Playgroud)

c++ performance multithreading

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

为什么这种性能恶化?

我需要减少我的原生Windows C++应用程序使用的内存,而不会影响其性能.

我的主要数据结构由以下Line类的数千个动态分配的实例组成:

struct Properties
{
    // sizeof(Properties) == 28
};


// Version 1
class Line
{
    virtual void parse(xml_node* node, const Data& data)
    {
        parse_internal(node, data);
        create();
    }

    virtual void parse_internal(xml_node*, const Data&);
    void create();

    Properties p;
};
Run Code Online (Sandbox Code Playgroud)

但是因为我注意到我可以摆脱类成员p,因为我只需要在parse方法中,我改变了Line实现:

// Version 2
class Line
{
    virtual void parse(xml_node* node, const Data& data)
    {
        Properties p;

        parse_internal(node, data, &p);
        create(&p);
    }

    virtual void parse_internal(xml_node*, const Data&, Properties*);
    void create(Properties*);
};
Run Code Online (Sandbox Code Playgroud)

这减少了分配的几兆字节的内存,但它将经过的时间增加了50多毫秒.

我想知道如果考虑到应用程序已经完全基于速度优化的发布版本编译,这怎么可能.这是因为论证传递了吗?是因为我的堆栈分配struct Properties …

c++ memory performance memory-management parameter-passing

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

我应该删除事件处理程序吗?

我有一个列表Button,并为每个按钮添加一个事件处理程序:

List<Button> buttons = new List<Button>();

for (int i = 0; i < 10; i++)
{
   Button btn = new Button();
   btn.Click = new RoutedEventHandler(OnbtnClick);
   buttons.Add(btn);
}
Run Code Online (Sandbox Code Playgroud)

然后我清除列表:

/* Have I to remove all events here (before cleaning the list), or not?
foreach (Button btn in buttons)
   btn.Click -= new RoutedEventHandler(OnbtnClick);
*/

buttons.Clear();
Run Code Online (Sandbox Code Playgroud)

c# event-handling

6
推荐指数
1
解决办法
582
查看次数

std :: unique_ptr编译器错误:派生类的成员无法访问基类的私有成员

当我尝试编译以下代码时,我得到编译器错误C2248:

#include <list>
#include <memory>
using namespace std;


class data
{
public:

    static data parse()
    {
        data d;
        data::parse(d);
        return d;
    }

    list<std::unique_ptr<data>> l;

private:

    static void parse(data& node)
    {       }
};


int main()
{

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么?我怎样才能解决这个问题?

注意:我没有问题std::shared_ptr而不是使用std::unique_ptr.

c++ compiler-errors unique-ptr c++11

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

选择后截断的ListViewItem文本 - Compact Framework

我有ListView一些ListViewItems(只有文字).

listView1 = new ListView
{
    View = System.Windows.Forms.View.Details,
    HeaderStyle = ColumnHeaderStyle.None
};


listView1.Columns.Add(String.Empty, -2, HorizontalAlignment.Left);
Run Code Online (Sandbox Code Playgroud)

以下图片是一个例子:

在此输入图像描述

问题是,当我选择其中一个项目时,文本会被截断,如下图所示:

在此输入图像描述

为什么?我怎么解决这个问题?

c# listview compact-framework listviewitem

6
推荐指数
1
解决办法
916
查看次数

修改特征矩阵对角线

我有一个Eigen::MatrixXd,我需要修改其对角线元素的值.特别是我有另一个Eigen::MatrixXd有一个单独的列和第一个矩阵的相同行数.

我需要减去第一个矩阵的对角线,第二个矩阵的元素的值.

例:

A
 1 2 3
 4 5 6
 7 8 9

B
 1
 1
 1


A'
 0 2 3
 4 4 6
 7 8 8
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

c++ matrix eigen diagonal

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