我们为什么要使用
for (int i = 0 ; i < count ; i++){ }
Run Code Online (Sandbox Code Playgroud)
为什么i
?
为什么不
for (int a = 0; a < count; a++){ }
Run Code Online (Sandbox Code Playgroud)
我这样做,你这样做,每个人都这样做,但是为什么?
*编辑
我发现了一个关于Fortran的古老谚语,它比正确的更有趣,它说"上帝是真实的,上面的其他一切都是整数".
"上帝"将是一个变量名称,g
因为它将在真实域中,而上面的所有其他内容(不包括h为笑话的目的)将是一个整数.
原来的说法似乎是:"上帝是真实的,除非宣布整数".向所有人在博士论文中引用我的道歉.
假设我定义了一些类:
class Pixel {
public:
Pixel(){ x=0; y=0;};
int x;
int y;
}
Run Code Online (Sandbox Code Playgroud)
然后使用它编写一些代码.我为什么要这样做?
Pixel p;
p.x = 2;
p.y = 5;
Run Code Online (Sandbox Code Playgroud)
来自Java世界我总是写:
Pixel* p = new Pixel();
p->x = 2;
p->y = 5;
Run Code Online (Sandbox Code Playgroud)
他们基本上做同样的事情,对吗?一个在堆栈上而另一个在堆上,所以我将在以后删除它.两者之间有什么根本区别吗?为什么我更喜欢一个呢?
我目前正在使用std::ofstream
如下:
std::ofstream outFile;
outFile.open(output_file);
Run Code Online (Sandbox Code Playgroud)
然后我尝试将std::stringstream
对象传递给outFile
如下:
GetHolesResults(..., std::ofstream &outFile){
float x = 1234;
std::stringstream ss;
ss << x << std::endl;
outFile << ss;
}
Run Code Online (Sandbox Code Playgroud)
现在我只outFile
包含垃圾:"0012E708"重复了一遍.
在GetHolesResults
我可以写
outFile << "Foo" << std:endl;
Run Code Online (Sandbox Code Playgroud)
并且它将正确输出outFile
.
关于我做错了什么的任何建议?
我有一个看门狗应用程序.它看我的主要应用程序可能因某种原因而崩溃(我知道这很糟糕,但这不是重点).
我编程这个看门狗接受SIGUSR1信号,以停止监控我的应用程序存在.我发出信号
kill -SIGUSR1 `pidof myapp`
Run Code Online (Sandbox Code Playgroud)
这非常有效.当我尝试发出没有内置此功能的旧版看门狗时,我的问题出现了.在这种情况下,kill信号会杀死看门狗(终止进程),这会导致进一步的复杂化(重启设备) .
有没有办法用SIGUSR1向看门狗发出信号,以便在未处理此特定信号时它不会终止?
我想知道是否可以将StreamWriter输出重定向到变量
就像是
String^ myString;
StreamWriter sw = gcnew StreamWriter([somehow specify myString])
sw->WriteLine("Foo");
Run Code Online (Sandbox Code Playgroud)
那么myString将包含Foo.我想这样做的原因是重用一个复杂的函数.我应该将它重构为一个String返回函数,但它仍然是一个很好的黑客知道
我知道find方法在std :: map中找到提供的键,并将迭代器返回给元素.反正有没有找到值并获得元素的迭代器?我需要做的是检查std :: map中是否存在指定的值.我通过循环地图中的所有项目并进行比较来完成此操作.但我想知道有没有更好的办法.
这是我写的
bool ContainsValue(Type_ value)
{
bool found = false;
Map_::iterator it = internalMap.begin(); // internalMap is std::map
while(it != internalMap.end())
{
found = (it->second == value);
if(found)
break;
++it;
}
return found;
}
Run Code Online (Sandbox Code Playgroud)
编辑
如何在内部使用另一个存储值,键组合的地图.所以我可以打电话找到它吗?std :: map中的find()是否进行顺序搜索?
谢谢
我正在尝试切片一个字节数组来修剪数组的第一部分.我正在使用ByteBuffer,但它的行为并不像我期望的那样.
byte[] myArray = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(myArray);
buf.position(5);
ByteBuffer slicedBuf = buf.slice();
byte[] newArray = slicedBuf.array();
Run Code Online (Sandbox Code Playgroud)
我希望newArray的大小为5,只包含我的ByteBuffer的最后一部分.而是返回完整的字节数组.我知道这是因为"后备缓冲区"一直都是一样的.
如何切片以仅包含阵列中所需的部分?
编辑:添加上下文
从网络接收字节.缓冲区形成如下:
[ SHA1 hash ] [ data... lots of it ]
我已经有一个函数,它将一个字节数组作为参数并计算SHA1哈希值.我想要的是切片整个缓冲区只传递没有预期哈希的数据.
我正在将代码从Java移植到c ++,我想复制一些匿名功能.
在档案啊我有:
class A
{
private:
int a;
class AnonClass;
friend class AnonClass;
};
Run Code Online (Sandbox Code Playgroud)
在文件A.cpp中我有:
namespace
{
class AnonClass
{
public:
AnonClass(A* parent)
{
parent->a = 0; // This doesn't work, a is not accessible
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以在C++中的匿名命名空间中使用某个类?
在Java中,您可以声明匿名类,因此它非常相似.此外,它不会将AnonClass暴露给Ah的客户
我正在调试网络应用程序.
我必须模拟一些交换的数据才能使应用程序正常工作.在C++中,你可以做类似的事情
char* myArray = { 0x00, 0x11, 0x22 };
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法找到这种语法的C等价物.
基本上我只想用硬编码值填充数组.
我想我是粗心的.
我向svn添加了一堆文件svn add
,然后我看到添加了一些我不想要的文件,所以我删除了它们rm
.
现在我不能再提交,因为提交缺少文件.我试过svn清理但它没有帮助.
我现在的工作选择是手动删除每个.svn目录,但这似乎是错误的.