我有一个名为小班Tank有一个叫做公共成员Location这是一个Rectangle(一个结构).我写的时候:
Tank t = new Tank();
t.Location.X+=10;
Run Code Online (Sandbox Code Playgroud)
一切正常,坦克移动.
但在我将成员更改为属性后,我再也无法使用此语法.它不编译,因为t.Location它现在是一个属性(它是函数)并返回该位置的临时副本(因为它是一个值类型).
我Location现在可以使用的唯一方法是做这样的事情:
k = t.Location
k.X +=10;
t.Location = k;
Run Code Online (Sandbox Code Playgroud)
是否有任何解决方法可以帮助我不要编写这些丑陋的代码,并使用直观的a+=10;语法?
虽然有关于vector的remove_if + erase有几十个问题.我找不到这种行为的表现.我写的时候:
myVector.erase(remove_if(myVector.begin(),
myVector.end(),
some_predicate), myVector.end());
Run Code Online (Sandbox Code Playgroud)
remove if会将迭代器返回到最后一个相关项+ 1(让我们称之为X).我相信这会发生在O(n)中.
但擦除将如何工作?
谢谢.
我正在尝试plot_trisurf使用以下代码进行绘图:
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(X1,Y1,Z1)
ax.plot_trisurf(X2,Y2,Z2)
Run Code Online (Sandbox Code Playgroud)
Z1 和 Z2 的比例有几个数量级不同。
如何共享 X 和 Y 轴,但不共享 Z ?
在 2D 中,我有函数“twinx()”,但我找不到 3D 的解决方案。
我会试着澄清我的问题:
我有一个名为Draw的函数(有人(XNA)每秒调用她60次),我有很多要绘制的对象,所以我有以下代码:void Draw(){obj1.draw(); obj2.draw(); obj3.draw(); ....}
是否会产生性能影响,如果我将创建一个事件,将由Draw()引发,并且所有对象都会注册该事件?
如果我不清楚我要问的是:通过注册活动来呼叫功能是否与普通呼叫不同?
我有一个用 java 编写的项目,使用 JNI 使用 C++ 库。所有的代码都是我们写的,所以我有所有的源代码。
几个小时后,机器内存不足,尽管我的进程只是迭代文件,并且与前一个文件相关的所有内存都被删除。
我确信存在内存泄漏,通常我使用Valgrind,但似乎他不能很好地应对Java,并且认为JVM正在泄漏,即使对于“hello world”java项目也是如此。
我已经通过单元测试测试了 C++ 部分(主要流程),并在单元测试中使用了 valgrind,但没有发现任何泄漏。这并不能证明任何事情,因为我可能会错过很多潜在的流程。
我的主要问题是,如何找到泄漏?
了解谁在消耗内存,是 Java 还是本机部分,这将非常有帮助?他们处于同一过程中。
谢谢。
如果我理解正确(如果我错了请纠正我),列表是由.NET中的数组实现的,这意味着列表中每个项目的删除都会导致重新分配所有列表(这意味着O(n)).
我正在开发一款游戏,在游戏中我有许多子弹在任何给定时刻在空中飞行,让我们说100个子弹,每帧我移动几个像素并检查与游戏中物体的碰撞,我需要删除从列表中每个碰撞的子弹.
所以我在另一个临时列表中收集了碰撞的子弹,然后执行以下操作:
foreach (Bullet bullet in bulletsForDeletion)
mBullets.Remove(bullet);
Run Code Online (Sandbox Code Playgroud)
因为循环是O(n)和删除O(n),我花费O(n^2时间删除.
有没有更好的方法来删除它,或更合适的集合使用?
背景短:
我正在开发一个应该运行数月并使用动态分配的系统.
问题:
我听说内存碎片减缓new和malloc运营商,因为他们需要在"洞"中的一个"发现"的地方,我留在了记忆,而不是在堆中简单的"前进".
我读过以下问题: 什么是内存碎片?
但是没有一个答案提到有关性能的任何内容,只有失败分配大内存块.
那么内存碎片会new花费更多时间来分配内存吗?如果是的话,多少钱?我如何知道是否new有"困难时间"在堆上查找内存?
我试图找到GCC用于在内存中找到"漏洞"以分配内部的数据结构/算法.但找不到任何血统的解释.
我的进程崩溃了,我有一个核心转储.我看到在运行类似的代码时进程崩溃了:
class father
{
public:
void virtual runVirtualFunc() = 0;
void func()
{
runVirtualFunc();
// ... crash here ... THIS IS THE PLACE I NEED TO KNOW WHO IS THE INHERITOR (so I could analyze which "runVirtualFunc" ran).
}
virtual ~father() {}
};
class son1 : public father
{
public:
void virtual runVirtualFunc() { /* do something 1*/}
};
class son2 : public father
{
public:
void virtual runVirtualFunc() { /* do something 2*/}
};
Run Code Online (Sandbox Code Playgroud)
我在核心转储中有一个完整的调用堆栈,但我不知道谁是运行"func"的继承者.有没有办法解决它(可能通过一些指针计算技巧this?)
我没有实时附加进程,只有核心转储.
假设我有Tanks,Airplanes和许多其他东西的列表,它们实现的常见的东西是IHaveLocation,它是抽象类,IHaveColor是一个接口.
我想列出它们,因为我需要在这两个接口的基础上查询列表.
我该怎么做 ?
这有什么诀窍吗?
我想做点什么 List<IHaveLocation and IHaveColor>
我有以下代码:
template <class T>
class GenericGeneticSolver
{
public:
GenericGeneticSolver(IGenticSolverHelper<T>& helper, int generationSize) : mSolverHelper(helper), mGenerationSize(generationSize)
{
mCurrentGeneration.resize(mGenerationSize);
for(int i=0;i<mGenerationSize;i++)
{
mSolverHelper.GenerateRandomSolution(mCurrentGeneration[i]);
}
sort(mCurrentGeneration.begin(),mCurrentGeneration.end(), solutionComparer);
}
void Evolve(int numberOfGenerations = 1)
{
//sort(mCurrentGeneration.begin(),mCurrentGeneration.end(), solutionComparer);
}
private :
int mGenerationSize;
vector<T> mCurrentGeneration;
IGenticSolverHelper<T>& mSolverHelper;
bool solutionComparer (T first,T second) { return (mSolverHelper.Cost(first)<mSolverHelper.Cost(second)); }
};
Run Code Online (Sandbox Code Playgroud)
在constructor我用成员填充向量,然后我试图通过将谓词传递给Sort函数来对该向量进行排序,谓词是一个名为`solutionComparer的成员函数.
不幸的是它没有编译,编译器不满意在构造函数中使用指向成员函数的指针,我在"Evolve"函数中尝试了相同的行,并且它确实编译.
我得到的错误是:
error C3867: 'GenericGeneticSolver<T>::solutionComparer': function call missing argument list; use '&GenericGeneticSolver<T>::solutionComparer' to create a pointer to member
Run Code Online (Sandbox Code Playgroud)
我试图做错误建议但它也没有编译(sort函数中的一些随机错误).
为什么我不能在构造函数中使用指向成员函数的指针?
c++ ×5
c# ×4
generics ×2
memory ×2
.net ×1
collections ×1
constructor ×1
delegates ×1
erase ×1
events ×1
gdb ×1
java ×1
linux ×1
matplotlib ×1
memory-leaks ×1
performance ×1
pointers ×1
properties ×1
python ×1
sorting ×1
std ×1
value-type ×1
vector ×1