我有一个int数组,我必须使用值-1初始化此数组.现在我使用这个循环:
int i;
int myArray[10];
for(i = 0; i < 10; i++)
myArray[i] = -1;
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?
我有一个这种类:
class A<TResult>
{
public TResult foo();
}
Run Code Online (Sandbox Code Playgroud)
但有时我需要将此类用作非泛型类,即类型TResult为void.
我无法通过以下方式实例化该类:
var a = new A<void>();
Run Code Online (Sandbox Code Playgroud)
另外,我宁愿不指定省略尖括号的类型:
var a = new A();
Run Code Online (Sandbox Code Playgroud)
我不想重写全班,因为它做同样的事情.
我需要解析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)
是否存在二进制格式的等价物?
我有一个数据结构(向量),元素必须由函数解析,其中元素可以由不同的线程解析.
以下是解析方法:
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()返回之间):
创建线程所需的时间始终在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) 我需要减少我的原生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 …
我有一个列表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) 当我尝试编译以下代码时,我得到编译器错误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.
我有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)
以下图片是一个例子:

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

为什么?我怎么解决这个问题?
我有一个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++ ×5
c# ×3
c++11 ×2
performance ×2
.net ×1
binary ×1
c ×1
diagonal ×1
eigen ×1
format ×1
generics ×1
image ×1
listview ×1
listviewitem ×1
matrix ×1
memory ×1
stringstream ×1
unique-ptr ×1
void ×1
wpf ×1