小编aar*_*rkk的帖子

Windows窗体应用程序中使用C ++ / CLI的命名空间混乱

我试图通过利用using namespaceWindows Forms项目节省一些编码时间。我在VS2010中使用C ++ / CLI创建了默认的Windows Forms项目。我注意到导入的默认名称空间是:

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
Run Code Online (Sandbox Code Playgroud)

我想创建一个DialogResult-typed变量,它(足够方便!)位于System::Windows::Forms命名空间内。我进入默认的构造函数Form1并添加以下行:

DialogResult dr;
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误syntax error : missing ';' before identifier 'dr'

但是,如果我将行更改为:

Windows::Forms::DialogResult dr;
Run Code Online (Sandbox Code Playgroud)

要么

System::Windows::Forms::DialogResult dr;
Run Code Online (Sandbox Code Playgroud)

然后一切都会按预期进行。

我也尝试添加

using namespace System::Windows;
Run Code Online (Sandbox Code Playgroud)

然后

Forms::DialogResult dr
Run Code Online (Sandbox Code Playgroud)

也可以!

这些命名空间的工作方式我缺少什么?我想避免必须完全限定我正在编写的所有代码,但是由于我应该已经导入了所需的名称空间,所以我无法弄清楚我在做什么错。

.net c++-cli visual-studio-2010 winforms

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

使用Boost和IOStreams序列化为静态数据

我正在尝试采用复杂的嵌套结构,并将其直接存储在.cpp文件中作为静态数据.我想采取的方法是获取我的对象(已经支持Boost序列化)并将其作为二进制存档序列化为字节数组.然后,我可以获取该字节数组,并遍历它以自动生成所需的.cpp代码以保存二进制数组.然后,我想从该字节数组反序列化回到对象中.

所以基本上,在一天结束时我会喜欢这样的事情:

unsigned char* my_obj = { 10, 48, 48, 30, 20 ... }
Run Code Online (Sandbox Code Playgroud)

当我想使用那些数据时,我只是将它包装在"字节流"中并再次传递给Boost以反序列化回我的实际对象.

我的问题是:是否有一些简单的方法将字节数组作为流传递?Boost处理istreams和ostreams来读取和编写档案.我不想使用字符串流或文件流,而是我想可能是一个自定义流,它只是作为传递给它的任何东西的巨大字节数组.

我觉得应该有一个很好的方法来创建这个自定义流并让它与Boost序列化无缝地工作......我只是不确定从哪里开始?

c++ serialization boost bytearray

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

在 C++ 中显示带有填充和固定位数的数字

我想使用填充(如有必要)和固定数量的数字来显示数字。例如,给定以下数字:

48.3
0.3485
5.2
Run Code Online (Sandbox Code Playgroud)

像这样显示它们:

48.30
00.35
05.20
Run Code Online (Sandbox Code Playgroud)

我正在尝试 std::fixed、std::fill、std::setw 和 std::setprecision 的组合,但我似乎无法得到我正在寻找的东西。希望得到一些指导!

注意:0 填充并不是很重要,但我仍然希望数字对齐,以便小数点在同一列中。

c++ iostream iomanip

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

查找Ruby数组数组的所有排列

假设我有以下输入数组数组:

[[1],[2,3],[4,5],[6]]
Run Code Online (Sandbox Code Playgroud)

我想生成这样的所有排列:

[[1,2,4,6],[1,2,5,6],[1,3,4,6],[1,3,5,6]]
Run Code Online (Sandbox Code Playgroud)

这样做有什么好的Ruby方式?或者真的以这种方式做到这一点?我觉得这是一个我看不到的优雅解决方案.

ruby ruby-on-rails

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

当我尝试返回const引用时,为什么会出现矢量副本?

我正在测量我在调试模式下运行的一个小演示的性能.这些操作似乎需要很长时间,并且正在进行复制操作(或者在调试时出现):

// Get access to the vertices and faces
auto vertices = t.GetVertices();
auto faces    = t.GetFaces();
Run Code Online (Sandbox Code Playgroud)

该功能的实现是这样的:

std::vector<glm::vec3>  const& GetVertices() const { return vertices_; }
std::vector<glm::ivec3> const& GetFaces()    const { return faces_;    }
Run Code Online (Sandbox Code Playgroud)

在包含以下私有成员的类中:

private:
  std::vector<glm::vec3>  vertices_;
  std::vector<glm::ivec3> faces_;
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,我都希望返回一个const引用几乎不会导致性能损失,但是这个操作似乎真的让程序陷入困境.我在这里错过了什么?这是否在发布模式下得到优化,但总是在调试模式下进行?

c++ stl vector

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

PostgreSQL 窗口函数“列必须出现在 GROUP BY 子句中”

我正在尝试从用户分数条目列表中获取用户分数总和的排行榜。单个用户可以在此表中拥有多个条目。

我有下表:

rewards
=======
user_id | amount
Run Code Online (Sandbox Code Playgroud)

我想将给定用户的所有值相加amount,然后在全球排行榜上对它们进行排名。这是我尝试运行的查询:

SELECT user_id, SUM(amount) AS score, rank() OVER (PARTITION BY user_id) FROM rewards;

我收到以下错误:

ERROR:  column "rewards.user_id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT user_id, SUM(amount) AS score, rank() OVER (PARTITION...
Run Code Online (Sandbox Code Playgroud)

是否user_id已经处于“聚合函数”中,因为我正在尝试对其进行分区?PostgreSQL 手册显示了以下条目,我觉得它与我的条目直接相似,所以我不确定为什么我的条目不起作用:

SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;

他们没有按 分组depname,那么他们的分组是如何工作的呢?

例如,对于以下数据:

user_id | score
===============
1 | 2
1 | 3 …
Run Code Online (Sandbox Code Playgroud)

postgresql

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