所以我很想知道,什么是随机访问?
我搜索了一下,找不到多少.我现在的理解是,在容器中的"块"随机放置(如看到这里).随机访问意味着我可以访问容器的每个块,无论在什么位置(所以我可以在不经过所有块之前读取它在第5个位置上所说的内容),而在顺序访问时,我必须经历第1个,第2个,第3和第4到达第5街区.
我对吗?或者如果没有,那么有人可以向我解释随机访问和顺序访问是什么?
所以我创建了一个Minecraft插件,我需要一个图形来创建一个导航系统.我研究了一下,发现我应该可以使用Dijkstra,但我有一个问题.当搜索最短路径时,我有时会得到一个无限循环(并不总是,它通常在前2-3次运行时起作用,但之后会进入循环).
当玩家想要到达目的地时,我搜索最近的顶点并使用带有该顶点的computePaths作为参数.然后,当我运行getShortestPathTo时,它有时会卡在无限循环中,并且我的内存耗尽(因为我将相同的顶点添加到列表中,因此会产生这种情况).你能明白为什么会卡住吗?据我所知,Dijkstra应该能够处理从A节点到B节点以及从B节点到A节点的权利吗?
以下是我的代码:
public class Dijkstra {
public static void computePaths(Vertex source) {
source.minDistance = 0.;
PriorityQueue<Vertex> vertexQueue = new PriorityQueue<Vertex>();
vertexQueue.add(source);
while (!vertexQueue.isEmpty()) {
Vertex u = vertexQueue.poll();
// Visit each edge exiting u
for (Edge e : u.adjacencies) {
Vertex v = e.target;
double weight = e.weight;
double distanceThroughU = u.minDistance + weight;
if (distanceThroughU < v.minDistance) {
vertexQueue.remove(v);
v.minDistance = distanceThroughU;
v.previous = u;
vertexQueue.add(v);
}
}
}
}
public static List<Vertex> getShortestPathTo(Vertex target) {
List<Vertex> path …Run Code Online (Sandbox Code Playgroud) 为正在制作的应用程序创建语言文件时,我遇到了很多样板代码。我目前有一个包含所有语言字符串的类,然后使用反射将这些字符串写入文件。
我经常碰到的是,我的字符串中有一些要替换的占位符,例如,我可能有一个像这样的字符串:
public static String USER_INFO = "Username: %name% money: %balance%";
我想实现的是基于注释生成一些方法,例如我可以使用lombok生成getter / setter和其他方法。根据上面的字符串,我将有一个注释Arguments(应该正确地命名为“替换者”或更有意义的东西),如下所示:
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface Arguments {
String[] value();
}
Run Code Online (Sandbox Code Playgroud)
我想做的就是添加这样的注释:
@Arguments(
value = {"%balance%", "%name%"}
)
public static String USER_INFO = "Username: %name% - money: %balance%";
Run Code Online (Sandbox Code Playgroud)
并自动生成以下替换方法:
public static String USER_INFONameReplacement(String name) {
return USER_INFO.replace("%name%", name);
}
public static String USER_INFOAllReplacement(String name, String balance) {
return USER_INFO.replace("%name%", name).replace("%balance%", balance);
}
public static String USER_INFOBalanceReplacement(String balance) {
return USER_INFO.replace("%balance%", balance);
}
Run Code Online (Sandbox Code Playgroud)
经过一些搜索之后,我最终尝试在这样的类中实现AbstractProcessor:
@SupportedAnnotationTypes(
{"io.github.freakyville.configHelper.annotations.Arguments"})
@SupportedSourceVersion(SourceVersion.RELEASE_8) …Run Code Online (Sandbox Code Playgroud) 是否可以制作带图像的滑块?不是作为背景而是像图像我上下拉动而不是滑块?
我已经四处搜索并看到了一些重绘滑块的例子,这是我需要做的事情,如果有的话,你可以链接我的任何例子吗?
还看到了一个叫做QML滑块的东西,我的项目是否可以实现,如果有的话,任何例子都会很棒!
我应该提到我对Qt和编程的一般情况,所以提前抱歉我犯了任何愚蠢的错误.
好的,我有一个非常简单的任务.
我为类Person提供了这两个构造函数:
Person( const string &, const string &, const string & );
Person( const string &, const string &, const string &,
const string & );
Run Code Online (Sandbox Code Playgroud)
我有4个默认值
其中哪些将成为默认构造函数?它总是最具争议的一个或它是如何工作的?
所以,我得到了我的类中的梅索德,什么这个类是应该做的是,检查我在.h文件中的矢量具有值bewtween double low&double high然后删除这些,最后返回多少"空间"是怎样才取出
所以我尝试了一些东西,我总是得到运行时错误,它似乎在for循环中,但我无法弄清楚为什么.
这是我试过的,
首先,我尝试按照我认为可行的方式进行操作:
int datastorage::eraseDataPointsBetween(double low,double high)
{
int antal = 0;
for (vector<double>::iterator i = data_.begin(); i !=data_.end();i++)
{
if (*i >=low && *i <=high)
{
data_.erase(i);
antal++;
}
}
return antal;
}
Run Code Online (Sandbox Code Playgroud)
但后来我尝试做一些调试,我可以看到它实际上没有让它像那样,当某些东西被删除它仍然会增加(所以如果我们删除"空间2"它实际上将检查空间4下一步时间(因为现场3在擦除后成为现场2)))
所以我试着改变它
int datastorage::eraseDataPointsBetween(double low,double high)
{
int antal = 0;
for (vector<double>::iterator i = data_.begin(); i !=data_.end();)
{
if (*i >=low && *i <=high)
{
data_.erase(i);
antal++;
}
else
i++;
}
return antal;
}
Run Code Online (Sandbox Code Playgroud)
只有i当我不删除空格时它才会增加(所以如果我删除"空格2",它将检查新的"空格2"下一次运行)
这也给我一个语法错误 …
所以我正和朋友讨论参考和指针.
我们谈到的是"你可以拿一个指针的地址,但你不能拿一个参考的地址"
我在这一点上不同意.让我们举一个例子:
int x = 0;
int &xRef = x;
cout << &xRef << &x <<endl;
Run Code Online (Sandbox Code Playgroud)
这个例子显示了相同的地址,但从来没有采取xRef过这样做的地址&xRef.难道你不能说我们有两个具有相同地址的变量,所以即使我正在获取引用的地址,它仍然是引用的地址(即使这是x的地址)?
我刚刚开始学习数据库,因此我需要一些设计数据库的帮助。我正在尝试制作一个成就系统,但我有点卡住,主要是因为我担心我的设计不是\xc2\xb4t 那么好。我想出了 2 个解决方案,第一个在这里显示:链接 1。
\n\n所以基本上我得到了一个拥有一些 ingameData 的用户。他玩过的每场比赛都会有记录,因此我不需要像total[xyz]这样的数据,其中xyz可以是任何统计数据,因为我可以通过查询获取那些数据。我的问题出在另一边。我有很多用户获得了很多成就。
\n\n到目前为止我学到的是,您应该始终在许多关系表中拥有 forigen 密钥,因此我需要添加另一个表,如我的 2 解决方案中所示:Link 2。这里我有,许多用户有一个成就表,并且许多成就属于一个成就表。我这里的连接有问题吗?和/或我的设计真的有缺陷吗?这是我的第一个真正的数据库设计,所以我有点无能为力
\n所以我现在是一名学生,正在进行编程.
今天我们讨论了在不同类中使用sizeof(如果它有1个int或2个int等等)
我发现奇怪的例子的一部分是这样的:
class TwoIntAndACharClass
{
public:
int x_;
int y_;
char z_;
};
Run Code Online (Sandbox Code Playgroud)
以及测试它的部分
TwoIntAndACharClass o3b;
cout << "Sizeof TwoIntAndACharClass = " << sizeof(o3b) << "\n";
Run Code Online (Sandbox Code Playgroud)
所以在程序中我可以看到一个带有1个字符的类占用了1个字节.所以当我看到这个时,我以为我会看到9个字节而不是12个字节
所以首先我认为它很奇怪,但经过一段时间我得出的结论是它可能会保存一些4字节的块.
为了100%确定这是真的,我尝试在类中添加一个新变量(一个8字节的双变量),总大小从12个字节增加到现在的24个字节.那个char现在必须是8个字节,所以我的最后一个理论失败了.
我的最后一个理论是它将采用最大的已经声明的变量并使用char变量_z的大小,因为这适用于long long int(8字节)和double(也是8字节)
所以我的问题是,我的最后一个理论是真的 - 或者它是否有所不同使得char需要更多的内存然后需要?(我的老师确实说过,每个编译器都能以不同的方式处理这个问题,但是我已经在microsoft visual studio上尝试过了,而且朋友在另一个编译器上尝试了相同的结果,但这是真的,它是编译器处理它的方式吗?)
抱歉我的英语不好.
c++ ×6
java ×2
annotations ×1
class ×1
constructor ×1
database ×1
graph ×1
qt ×1
reference ×1
sql-server ×1
stl ×1
vector ×1