这个方法是我的类集(大学)的成员函数,它有成员,Set(指针)和card(int)(基数)。我应该删除重复项并减少分配的内存。
nSet
指针用于暂时保存数据。
不幸的是,无论何时召唤,它都会崩溃。 Wat do?
void remdup() {
int *nSet;
for(int x=0;x<card-1;x++) {
for(int y=x+1;y<card;y++) {
if(Set[x]==Set[y]) {
for(int g=y;g<card-1;g++) {
Set[g]=Set[g+1];
} card--;
}
}
}
nSet=new int[card];
for( int u=0;u<card;u++) {
nSet[u]=Set[u];
}
delete Set;
Set=new int[card];
for(int u=0;card;u++) {
Set[u]=nSet[u];
}
答案 0 :(得分:1)
使用std::set
而不是发明另一个更糟糕的设置。
答案 1 :(得分:1)
首先,我建议您使用 std::set
而不是自己动手。
除此之外,如果您将for(int u=0;card;u++)
更改为for(int u=0;u<card;u++)
,则在代码的末尾会有效。
但是如果您想自己完成所有工作并缩小int
数组,则应使用std::memcpy
将数据从旧动态内存复制到新动态内存:
#include <cstring> // memcpy
int *nSet = new int[card];
std::memcpy( nSet, Set, card );
delete [] Set;
Set = nSet;
答案 2 :(得分:0)
你的for循环中有错误。 Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLUE);
paint.setStrokeWidth(10);
Bitmap b = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
RectF rectF = new RectF();
rectF.set(5,5,250,250);
c.drawRoundRect(rectF, 10, 10, paint);
imgView.setImageBitmap(b);
for(intialization;condition;increment) {}