这是关于容器的一个小问题,特别是数组.
我正在编写一个物理代码,主要操作一个大的(> 1 000 000)"粒子"集(double每个有6个坐标).我正在寻找最好的方法(在性能方面)来实现一个类,该类将包含这些数据的容器,并将为这些数据提供操作原语(例如实例化operator[]等).
如何使用此集合有一些限制:
第一个结论,因为对元素的访问基本上是通过逐个访问每个元素来完成的[],我认为我应该使用普通的动态数组.
我已经探讨了一些事情,我想对那些可以给我最好表现的人发表意见.
据我所知,使用动态分配的数组而不是a是没有优势的std::vector,因此double** array2d = new ..., loop of new, etc排除了类似的东西.
那么使用它是个好主意std::vector<double>吗?
如果我使用a std::vector,我应该创建一个像std::vector<std::vector<double> > my_array索引一样的二维数组my_array[i][j],或者这是一个坏主意,最好使用std::vector<double> other_array和访问它other_array[6*i+j].
也许这可以提供更好的性能,特别是当列的数量是固定的并且从一开始就知道.
如果您认为这是最佳选择,是否可以将这个向量包装为可以使用定义为other_array[i,j] // same as other_array[6*i+j]没有开销的索引运算符(如每次访问时的函数调用)访问它?
另一种选择,我到目前为止使用的是使用闪电战,特别是blitz::Array:
typedef blitz::Array<double,TWO_DIMENSIONS> store_t;
store_t my_store;
Run Code Online (Sandbox Code Playgroud)
我的元素被访问的地方:my_store(line, column);.
我认为在我的情况下使用Blitz没有多大优势,因为我逐个访问每个元素,如果我直接在数组上使用操作(如矩阵乘法),那么Blitz会很有趣,我不是.
你认为闪电战是好的,还是我的情况没用?
这些是我到目前为止考虑的可能性,但也许是最好的一个我还是另一个,所以不要犹豫,建议我其他的东西.
非常感谢您对此问题的帮助!
编辑:
从非常有趣的答案和评论下面看来,一个好的解决方案如下:
particle(包含6个双打)或6个双打的静态数组(这避免使用二维动态数组)我正在使用vbscript安装网络打印机,如果队列不存在或打印机服务器不可用,我想显示一个友好的错误,我可以使用VBScript吗?我的代码如下.
Dim net
Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\printsrv\HPLaser23"
net.SetDefaultPrinter "\\printsrv\HPLaser23"
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助
史蒂芬
显然,可以在运行时动态地将DataAnnotation属性附加到对象属性,从而实现动态验证.
有人可以提供代码示例吗?
我用PyQt制作了一个项目的原型并使其在那里工作,现在我正在尝试将其转换为C++并且遇到了一些问题.
如果我没有放入Q_OBJECT宏,它会编译并运行,但如果我将其注释掉,我会收到以下错误:
Undefined symbols:
"vtable for MapView", referenced from:
MapView::~MapView()in mapview.o
MapView::~MapView()in mapview.o
MapView::MapView(QObject*)in mapview.o
MapView::MapView()in mapview.o
"MapView::staticMetaObject", referenced from:
MapView::MapView(QObject*)in mapview.o
MapView::MapView()in mapview.o
Run Code Online (Sandbox Code Playgroud)
这是标题:
#ifndef MAPVIEW_H
#define MAPVIEW_H
#include <QtGui>
#include <QObject>
class MapView : public QGraphicsScene
{
//Q_OBJECT
public:
MapView();
explicit MapView(QObject *parent = 0);
QGraphicsPixmapItem *mappixmap;
~MapView();
private:
bool dragging;
float offsetX, offsetY, downoffsetX, downoffsetY;
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
};
#endif // MAPVIEW_H
Run Code Online (Sandbox Code Playgroud)
如果我在这里省略Q_OBJECT宏,那么第二个问题就是Bad Things会发生吗?
是的,我知道将QGraphicsScene称为"视图"是愚蠢的.
我正在使用django通用视图,如何在我的模板中访问请求.
网址:
file_objects = {
'queryset' : File.objects.filter(is_good=True),
}
urlpatterns = patterns('',
(r'^files/', 'django.views.generic.list_detail.object_list', dict(file_objects, template_name='files.html')),
)
Run Code Online (Sandbox Code Playgroud) 你能为Python推荐一款高性能,线程安全且稳定的ORM吗?我需要处理的数据并不复杂,因此SQLAlchemy可能是一种过度杀伤力.
我的任务是建立一个简单的基于Web的系统来管理车辆列表.
我很想知道是否有任何健壮,干净的PHP 5框架/库专门快速完成这项工作.
他们应该能够使用基本功能快速构建任意数据结构的框架Web后端:
很高兴有:
湿梦:
我知道大多数大框架为此提供了工具和帮助,但更喜欢一个易于进入的独立,轻量级解决方案.
或者,是否有一个很棒的PHP应用程序,您建议您根据我的需要进行修改?
如何通过指定元素来获取元素集合id?我想获得idhtml中具有相同标签的所有标签的名称.
我想只使用getElementById()一个元素数组.我怎样才能做到这一点?
我已经阅读了一些关于JEE6上Observer模式实现的博客文章,还有什么困扰我......我找不到任何信息,所以我问那里......
我发现了以下例子:
@Stateless
[...]
public class ParisJugService {
@Inject
Event event;
public void helloParis(){
System.out.println("Hello Paris");
event.fire("hello Paris invoked!");
}
}
@Stateless
public class EventReceiver {
public void onHelloParis(@Observes String message){
System.out.println("----------- " + message);
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class MyEvent {
String data;
Date eventTime;
....
}
public class EventProducer {
@Inject @Any Event<MyEvent> event;
public void doSomething() {
MyEvent e=new MyEvent();
e.data="This is a test event";
e.eventTime=new Date();
event.fire(e);
}
}
public class EventConsumer {
public void afterMyEvent(@Observes …Run Code Online (Sandbox Code Playgroud) 对我来说,他们都是一样的.UtcNow只是一条捷径吗?