可能重复:
将长固定数转换为数组Ruby
好吧,我必须遍历Ruby中的整数数字.现在我只是把它拆分成一个数组,然后迭代它.但是我想知道是否有更快的方法来做到这一点?
所以,我正在阅读有关指针的内容,并且遇到了指向数组的指针.问题是指向数组的指针根本不是真的有用,因为我可以直接获取元素,而不是使用指针来获取数组元素的偏移量.但是我觉得好像我错过了这些可能有用的原因.
所以,简而言之,指向数组的重点是什么; 如何以及为什么要使用它们,它们是否有任何实际应用?
编辑:我的意思是在普通/简单数组的上下文中,例如:
int array[5];
Run Code Online (Sandbox Code Playgroud)
编辑:正如Keith指出的那样,我特别询问指向数组的指针,例如char (*ptr)[42]指向42个元素的char数组的指针.
所以我在C#项目中有一些文件扩展名,如果它们在那里我需要从文件名中删除它们.
到目前为止,我知道我可以检查子字符串是否在文件名中.
if (stringValue.Contains(anotherStringValue))
{
// Do Something //
}
Run Code Online (Sandbox Code Playgroud)
所以,如果说stringValue是test.asm,然后它包含.asm,我想以某种方式删除.asm从stringValue.
我怎样才能做到这一点?
所以我正在研究我的代码,它以模块化的方式设计.现在,我的一个班级; 被调用Splash必须创建另一个被调用的类的对象Emitter.通常你只需要创建对象并完成它,但这在这里不起作用,因为Emitter类有一个自定义构造函数.但是当我尝试创建一个对象时,它不起作用.
举个例子;
Emitter有一个像这样的构造函数:Emitter::Emitter(int x, int y, int amount);并且需要创建,以便可以在Splash类中访问它.
我试图这样做,但它不起作用:
class Splash{
private:
Emitter ps(100, 200, 400, "firstimage.png", "secondimage.png"); // Try to create object, doesn't work.
public:
// Other splash class functions.
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个,但也没用:
class Splash{
private:
Emitter ps; // Try to create object, doesn't work.
public:
Splash() : ps(100, 200, 400, "firstimage.png", "secondimage.png")
{};
}
Run Code Online (Sandbox Code Playgroud)
编辑:我知道第二种方式应该可行,但事实并非如此.如果我删除该Emitter部分,代码工作.但是当我第二种方式,没有窗口打开,没有应用程序执行.
那么如何创建我的Emitter对象Splash呢?
编辑:
这是我的发射器类和标头的代码:
Header
// …Run Code Online (Sandbox Code Playgroud) 我在Windows XP上使用Cygwin安装开发C++程序.
我也安装了MinGW,因为我想使用它的g ++版本,而不是Cygwin附带的版本.
那部分似乎设置正确.当我开始Cygwin会话时,我看到了这个:
$ g ++
/cygdrive/c/MinGW/bin/g ++
这是正确的,g ++指向我的MinGW安装.
我不明白的是当我编写包含库代码的代码(例如,来自`Winsock/BerkleySockets API的头文件)时,如何判断编译器在哪里找到头文件?
例如,如果我#include "winsock.h"在我的代码中,编译器在哪里找到该头文件?
如果我在计算机上搜索winsock.h,我会得到:
C:\ MinGW \包括
C:\ cygwin\usr\include\w32api
两者都有winsock.h的副本(虽然这些文件大小不完全相同,所以它们不能相同).
谢谢您的帮助.
我还应该指出,我有C:\MinGW\bin我的Windows PATH环境变量,以及我/etc/profile file在Cygwin中配置的相同路径.
所以我正在寻找一个Tic-Tac-Toe游戏的Mini-max,但是无法理解递归是如何工作的?好的,基本上这里是我的问题:
例如在这个伪代码中
function integer minimax(node, depth)
if node is a terminal node or depth <= 0:
return the heuristic value of node
? = -?
for child in node: # evaluation is identical for both players
? = max(?, -minimax(child, depth-1))
return ?
Run Code Online (Sandbox Code Playgroud)
A node是一块板子吗?并且代码在递归中的深度是多少?还有什么max功能以及从哪里生成节点?
现在,到目前为止,我已经有了创建板的代码:
class Board{
public:
Board();
~Board(){};
public: // The board
// In the board, 1 is x, 2 is o, 0 is empty square.
int board[3][3];
};
Run Code Online (Sandbox Code Playgroud)
但我怎么知道轮到谁了?我如何为电路板生成子节点?
我有这个代码可以与 ncurses 一起使用:
#include <iostream>
#include <string>
#include <fstream>
#include <ncurses.h>
#include <cstdlib>
//char a='a';
int c=0;
bool ex = false;
void mva()
{
std::cout << "Nothing here yet, move along." << std::endl;
}
void cho()
{
std::cout << "Choose a valid option noob!" << std::endl;
}
void menu()
{
std::cout << "Welcome." << std::endl;
std::cout << "Choose an option" << std::endl;
std::cout << "1." << std::endl;
std::cout << "2." << std::endl;
std::cout << "3." << std::endl;
std::cout << "4. …Run Code Online (Sandbox Code Playgroud) 因此,我尝试使用C ++进行游戏,并且阅读了很多有关有限状态机(FSM)和分层状态机(HSM)的文章。但是,我将承认我阅读的大部分内容都有些密集且难以理解,因此我希望有人可以为我简化它。这是FSM还是HSM?
根据我想清除的内容:
HSM与普通的FSM有何不同?为什么对游戏更好?
关于C ++,如何按照状态模式实现基本的HSM?(我可能对此不正确/使用错误的单词。)
您如何精确地处理过渡?我经常听到的on_exit和on_enter方法是什么?
我整个游戏需要一个HSM吗?(例如处理所有敌人,玩家动作,游戏菜单)还是我使用多个HSM?
在实现玩家实体时,它们是否都是实体状态的子集?
最后,如果有人可以提供一些伪代码来帮助可视化这些问题,我将不胜感激。
因此,我一直在学习挂钩和使用蹦床的概念,以便绕过/执行 WinAPI 挂钩函数中的数据(在不同的可执行文件中,使用 DLL 注入)。到目前为止,我知道如何使用汇编和 C 的混合来制作它(蹦床和钩子),但我似乎无法仅使用 C 来做到这一点,因为我似乎遗漏了一些东西。如果有人能告诉我我做错了什么以及如何解决它,我将不胜感激。
现在我的代码:
#include <Windows.h>
unsigned char* address = 0;
__declspec(naked) int __stdcall MessageBoxAHookTrampoline(HWND Window, char* Message, char* Title, int Type) {
__asm
{
push ebp
mov ebp, esp
mov eax, address
add eax, 5
jmp eax
}
}
int __stdcall MessageBoxAHook(HWND Window, char* Message, char* Title, int Type) {
wchar_t* WMessage = L"Hooked!";
wchar_t* WTitle = L"Success!";
MessageBoxW(0, WMessage, WTitle, 0);
return MessageBoxAHookTrampoline(Window, Message, Title, Type);
}
unsigned long __stdcall Thread(void* Context) …Run Code Online (Sandbox Code Playgroud) 仅使用按位运算符(|, &, ~, ^, >>, <<),是否可以替换!=下面的?
// ...
if(a != b){
// Some code
}
/// ...
Run Code Online (Sandbox Code Playgroud)
这主要是出于自身利益,因为我看到了如何做==而不是!=.