- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的 safearray 可以保存任何类型的数据,并且可以根据需要调整大小。我设置它要做的是,如果用户输入的数组大小小于 for 循环中的索引(在本例中为 30),它将自行调整大小。但是它太大了,所以我只有很多零。例如,如果我输入 15 号,它将变成 45 号,这样我就可以存储所有数据,但我有多余的空间,我不需要。我的助教说这对于一个好成绩来说很好,但是因为它再过几天才到期,我想有一个调整大小的函数,可以将数组的大小调整为与索引的大小完全相同,而不管用户输入的大小是多少.我不确定如何最好地做到这一点。有什么帮助吗?谢谢。
#include <iostream>
using namespace std;
template<typename Element>
class SafeArray
{
int size;
Element*Array;
Element def;
public:
SafeArray() //default constructor(with no parameter)
{
Array = new Element[size];
size = 10;
}
SafeArray(int value = NULL) //constructor with one int
{
Array = new Element[value];
size = value;
}
~SafeArray() { delete [] Array;}; //destructor
Element get(int pos) //get method
{ if (pos<0)
{cout<<"error";}
if(pos>=size)
{ set_default(def);}
return Array[pos]; }
void set(int pos, Element val) //set method
{ if (pos<0)
{
cout<<"error";
}
if(pos>=size)
{ resize(3); }
Array[pos] = val; }
void resize(int size_mult) //resize function
{
Element*temp=new Element[size*size_mult];
for(int i = 0; i<size;i++)
{temp[i]=Array[i];}
delete[]Array;
Array = temp;
size=size*size_mult;
}
void set_default(Element d) //set_default(just a safety precaution, doesn't really effect the outcome)
{
def=d;
}
//Element get_default()
// {
// return def;
// }
int get_size() //get size
{
return size;
}
};
int main()
{
int N;
cout<<"How big should the Array be?"<<endl;
cin>>N;
SafeArray<int> X(N);
SafeArray<double>Y(N);
X.set_default(-1);
cout<<"Array is size "<<X.get_size()<<endl;
for(int i=0; i<30;i++)
{
int x=i*3+1;
double y =1000.0/x;
X.set(i,x);
Y.set(i,y);
}
for (int i = 0; i <= X.get_size(); i += 1)
{if(i<10)
cout <<"0"<< i << ": x = " << X.get(i) << ", 1000/x = " << Y.get(i) << "\n";
else
cout << i << ": x = " << X.get(i) << ", 1000/x = " << Y.get(i) << "\n";}
cout<<"Array is size "<<X.get_size()<<endl;
return 0;
}
最佳答案
好吧,有些事情需要考虑。
注意:与传递的倍数相比,我只乘以 2 可能是明智的,因为您将获得相同的时间 yield ,但不会在较大的调整大小时产生太多空间。 (即 10,000 * 2 = 20,000 与 10,000 * 3 = 30,000 节省了 10,000 个您可能最终不需要的空间)
现在要真正回答您的问题,最好的方法是创建一个从 0 到索引的 for 循环,然后将值复制到新数组中,并使最后一条语句成为新的赋值。见下文
集合会变成:
void set(int pos, Element val) //set method
{ if (pos<0)
{
cout<<"error";
}
if(pos>=size)
{ resize(pos+1); }
Array[pos] = val; }
调整大小看起来像这样:
void resize(int new_size) //resize function
{
Element*temp=new Element[new_size];
for(int i = 0; i<new_size;i++)
{temp[i]=Array[i];}
delete[]Array;
Array = temp;
size=new_size;
}
编辑:如果您不太关心空间,想要节省一些时间,并且仍然有一个安全的边界分配(有人在对您的问题的评论中指出),您可以将以下内容用于 Set 方法:
设置:
void set(int pos, Element val) //set method
{ if (pos<0)
{
cout<<"error";
}
if(pos>=size)
{ resize((pos - size) * 2); }
Array[pos] = val; }
这将为您提供一些额外的空间,并且您可以使用大于 2 的倍数以在顺序情况下获得更好的时间节省(即通过 for 循环添加)。
关于c++ - 灵活的安全数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386219/
我有以下几行代码: using XXX.PAD.PaidServices; using YYY= XXX.PAD.PaidServices.Judet; //// uncomment below fo
我正在寻找一种方法,让 LAN 中的客户端无需任何配置即可找到我的服务器应用程序的所有实例。我不想自己破解某些东西,而是想使用现有的解决方案。就个人而言,我需要用 Python 完成它,但我很乐意听到
我的“问题”或“挑战”有很多问题。但它们都不符合我的需求。好的,我开始了: 我想要一个保存可变属性的数据库。现在我将它们作为列名“硬编码”到数据库中(参见图片)。请参阅“颜色”和“尺寸”。但是如果我想
我正在为我的一个 friend 创建一个网站。我们得到了这些布局,我已经放了一个灵活的背景,可以缩放到当前的浏览器大小。但是放置在背景上的图标需要在缩放窗口时保持相对位置。意味着如果我调整窗口大小,让
案例 通常,您会使用 cellForRowAtIndexPath 委托(delegate)方法来设置单元格。单元格的信息集对于单元格的绘制方式和大小非常重要。 不幸的是,heightForRowAtI
我试图让下面的 div 变得灵活 div { min-width: 500px; max-width: 1000px; width:100%; height: 400px; margin-left:1
我在单元测试方面遇到问题。当我运行测试时,它以 "No tests found" 结束。我正在使用 AppCode 和 Quick/Nimble 框架进行单元测试,但它在 XCode 中也不起作用。
问之前,请理解我的英语不好。 我在 servlet 编程中使用 Class.forName(...) 类。当我访问 servlet 时,我从数据库中获得一行详细的 Controller 信息,指示要使
我创建了一个cron job在 GAE 灵活环境中,每 15 分钟自动运行一次。 但是在创建每个实例时,是否会为每个实例复制相同的 cron 作业?我对此不太确定。 最佳答案 不,不会为每个实例复制
div A 灵活且固定(位于窗口顶部),具有高 z-index,因此下方的元素可以在滚动时从下方通过。 div B 位于 div A 下方,我希望它“粘”在 div A 的底部,因为在调整窗口大小时高
我是 Quick/Nimble 的新手,所以我尝试了一个简单的单元测试: import Quick import Nimble class DarkSkyTests: QuickSpec {
我创建了一个演示。关于表格单元格的灵 active ,我需要一些帮助。 我有一些表格单元格,它们的宽度应该是固定的。 但单元格由标签组成,标签可以是长文本,也可以是短文本。 基于此标签,表格单元格应该
我非常熟悉在代码中需要“水平带”的网站 - 即使他们的内容固定在 960 像素以内,他们的背景也会向左和向右“延伸”。 我知道如何做这些,如果它们只有一种颜色,或者我可以用作背景的一张图片。 最近一位
我在自己编写的网站(无框架或 CMS)上使用 Cloudflare Flexible SSL。一切正常,现在我想在整个网站上使用 HTTPS。我在 Apache Web 服务器上使用 PHP。 我想知
我有这个 Java 接口(interface): public interface Box { public void open(); public void close(); } 这个接
所以我有一个“主要”功能系统,现在可以作为 CMS 使用:用户进入编辑器并从四个模板中选择一个。在模板中,他们单击可以添加图像、文本或两者的部分。 我有一个预览屏幕,可以向他们展示他们正在制作的东西,
下面的 HTML/CSS/Javascript (jQuery) 代码显示了 #makes 选择框。选择一个选项会显示带有相关选项的 #models 选择框。 #makes 选择框偏离中心,#mode
我正在使用固定高度的图像来填充具有渐变颜色的 div,方法如下:背景:透明 url(green_bg.gif) repeat-x scroll 0 0; 但是它只填充一个等于图像高度的高度。根据其中的
我的系统的 GUI 在 1366 X 768 分辨率下运行良好。当它以不同的分辨率显示时,我需要并排滚动,而它不应该这样。此外,当我尝试在 chrome 中按 ctr+- 时,div 和部分变得困惑。
我正在尝试在 google app engine 灵活环境中使用 python 编写日志。 我想使用默认的 python 日志记录库并使用处理程序进行日志记录。这是我的代码: import loggi
我是一名优秀的程序员,十分优秀!