我知道答案是99.99%没有,但我认为值得一试,你永远不会知道.
void SomeFunction(int a)
{
// Here some processing happens on a, for example:
a *= 50;
a %= 10;
if(example())
a = 0;
// From this point on I want to make "a" const; I don't want to allow
// any code past this comment to modify it in any way.
}
Run Code Online (Sandbox Code Playgroud)
我可以做一些类似的东西const int b = a;,但它并不是真的相同,它会造成很多混乱.只接受C++ 0x解决方案.
编辑:另一个不那么抽象的例子,那个让我问这个问题的例子:
void OpenFile(string path)
{
boost::to_lower(path);
// I want path to be constant now
ifstream ...
}
Run Code Online (Sandbox Code Playgroud)
编辑 …
我读到C++标准禁止递归main(),但是g ++编译以下代码而没有抱怨:
int main()
{
main();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以澄清这个吗?
花了一些时间来解决PHP/MySQL Web应用程序连接到数据库时遇到问题的问题.可以从shell和phpMyAdmin访问数据库,使用完全相同的凭据,这是没有意义的.
原来密码有一个$符号:
$_DB["password"] = "mypas$word";
Run Code Online (Sandbox Code Playgroud)
发送的密码是"mypas",这显然是错误的.
处理这个问题的最佳方法是什么?我用一个\逃过了$
$_DB["password"] = "mypas\$word";
Run Code Online (Sandbox Code Playgroud)
它起作用了.
我通常使用$string = 'test'字符串,这可能是我之前避免遇到的问题.
这是正确的行为吗?如果这个密码存储在数据库中并且PHP将其删除 - 会出现同样的问题吗?我在这里想念的是什么......
你能帮我解决这个编译错误吗?
template<class T>
static void ComputeGenericDropCount(function<void(Npc *, int)> func)
{
T::ForEach([](T *what) {
Npc *npc = Npc::Find(what->sourceId);
if(npc)
func(npc, what->itemCount); // <<<<<<< ERROR HERE
// Error 1 error C3493: 'func' cannot be implicitly captured because no default capture mode has been specified
});
}
static void PreComputeNStar()
{
// ...
ComputeGenericDropCount<DropSkinningNpcCount>([](Npc *npc, int i) { npc->nSkinned += i; });
ComputeGenericDropCount<DropHerbGatheringNpcCount>([](Npc *npc, int i) { npc->nGathered += i; });
ComputeGenericDropCount<DropMiningNpcCount>([](Npc *npc, int i) { npc->nMined += i; });
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它给我错误,我不知道如何解决它.ComputeGenericDropCount(auto …
我想使用boost :: crc,以便它的工作方式与PHP的crc32()函数完全相同.我尝试阅读可怕的文档和许多令人头疼的事情后来我没有取得任何进展.
显然我必须做以下事情:
int GetCrc32(const string& my_string) {
return crc_32 = boost::crc<bits, TruncPoly, InitRem, FinalXor,
ReflectIn, ReflectRem>(my_string.c_str(), my_string.length());
}
Run Code Online (Sandbox Code Playgroud)
bits应该是32 ..其他事情是一个谜.一点帮助?;)
我们接管了一些.NET 1.1 Windows服务代码,它生成线程以从队列中读取消息(SeeBeyond eGate JMS队列,但这并不重要),然后生成线程来处理目标应用程序服务中的消息.我们不断遇到令我们困惑的逻辑和设计决策.这是一个示例,其中已从队列中检索消息(lsMessage)并准备好进行处理
if(lsMessage != null)
{
// Initialize a new thread class instance, pass in message
WorkerThread worker = new WorkerThread(lsMessage);
Process:
// Start a new thread to process the message
Thread targetWorker = new Thread(new ThreadStart(worker.ProcessMessage));
if(targetWorker != null)
{
targetWorker.Priority = ThreadPriority.Highest;
targetWorker.Name = "Worker " + queueKey.ToString();
targetWorker.Start();
// wait for worker thread to join back in specified period
bool isFinished = targetWorker.Join(SYNC_THREAD_TIMEOUT);
string message = worker.replyMsg;
if ( !isFinished ) // BF is …Run Code Online (Sandbox Code Playgroud) 在C++中实现多态行为时,可以使用纯虚方法,也可以使用函数指针(或函子).例如,异步回调可以通过以下方式实现:
class Callback
{
public:
Callback();
~Callback();
void go();
protected:
virtual void doGo() = 0;
};
//Constructor and Destructor
void Callback::go()
{
doGo();
}
Run Code Online (Sandbox Code Playgroud)
因此,要在此处使用回调,您需要覆盖doGo()方法以调用您想要的任何函数
typedef void (CallbackFunction*)(void*)
class Callback
{
public:
Callback(CallbackFunction* func, void* param);
~Callback();
void go();
private:
CallbackFunction* iFunc;
void* iParam;
};
Callback::Callback(CallbackFunction* func, void* param) :
iFunc(func),
iParam(param)
{}
//Destructor
void go()
{
(*iFunc)(iParam);
}
Run Code Online (Sandbox Code Playgroud)
要在此处使用回调方法,您需要创建一个由Callback对象调用的函数指针.
[这是我(Andreas)在问题中添加的; 它不是由原始海报写的]
template <typename T>
class Callback
{
public:
Callback() {}
~Callback() {}
void go() {
T …Run Code Online (Sandbox Code Playgroud) 自从我使用MySQL多年以来,我有点羞于问这个问题,但是哦.
我有一个有两个字段的表,a和b.我将在其上运行以下查询:
SELECT * FROM ... WHERE A = 1;SELECT * FROM ... WHERE B = 1;SELECT * FROM ... WHERE A = 1 AND B = 1;从性能的角度来看,对于至少一个查询,至少有以下一种索引配置较慢?如果是,请详细说明.
ALTER TABLE ... ADD INDEX (a); ALTER TABLE ... ADD INDEX (b);ALTER TABLE ... ADD INDEX (a, b);ALTER TABLE ... ADD INDEX (a); ALTER TABLE ... ADD INDEX (b); ALTER TABLE ... ADD INDEX (a, b);谢谢(请注意,我们正在讨论非唯一索引)
有没有办法重定向201答案?
RFC指定必须在Location标头中指定新创建的资源,并且我指定它.我假设浏览器会重定向,但它不会,即使页面没有内容.
我希望用户在POST操作后重定向到新资源.因此我很想使用,303 See Other但201似乎更合适.
那么,有没有办法在没有用户干预的情况下自动重定向流行的浏览器而不依赖于Javascript?
我代表一位朋友发帖,因为我觉得这很有趣:
取字符串"abb".通过遗漏少于字符串长度的任意数量的字母,我们最终得到7个字符串.
abb ab ab bb abb
其中4个是回文.
同样对于字符串
"hihellolookhavealookatthispalindromexxqwertyuiopasdfghjklzxcvbnmmnbvcxzlkjhgfdsapoiuytrewqxxsoundsfamiliardoesit"
(长度为112弦)2 ^ 112 - 可以形成1个弦.
其中有多少是回文?
下面是他的实现(在C++中,C也很好).用很长的词来说它很慢; 他想知道什么是最快的算法(我也很好奇:D).
#include <iostream>
#include <cstring>
using namespace std;
void find_palindrome(const char* str, const char* max, long& count)
{
for(const char* begin = str; begin < max; begin++) {
count++;
const char* end = strchr(begin + 1, *begin);
while(end != NULL) {
count++;
find_palindrome(begin + 1, end, count);
end = strchr(end + 1, *begin);
}
}
}
int main(int argc, char *argv[])
{
const …Run Code Online (Sandbox Code Playgroud)