我对c ++非常熟悉.我用它制作了一些像俄罗斯方块和纸牌游戏.但我真正想要的是那些游戏的一些漂亮的纹理图形:-p GDI就是不再为我做这件事了.
真的,我需要知道的是:
任何能够涵盖这些概念的东西都非常有用谢谢
我需要这样的地图:
typedef std::map<int, float , char> Maptype ;
Run Code Online (Sandbox Code Playgroud)
在此映射中插入和搜索pair的元素的语法是什么.
我在C++中有以下代码.
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ofstream output("Sample.txt", ios::out | ios::binary);
for(int i = 0; i < 10; i++)
{
output<<arr[i];
}
Run Code Online (Sandbox Code Playgroud)
现在Sample.txt是这样的:
12345678910
Run Code Online (Sandbox Code Playgroud)
是不是"Sample.txt"应该是二进制文件?当我以二进制模式打开流时,为什么不将所有内容都转换为二进制文件.我该怎么办,因为我需要数组中每个元素的二进制文件,然后将其打印到文件中.
正如问题所述,我正在使用MIPSPRo C编译器,并且我有一个操作将返回一些数据集的NaN,其中分子和denom都为零.我如何防止这种情况发生?
C困扰我对弦乐的处理.我心中有这样的伪代码:
char *data[20];
char *tmp; int i,j;
for(i=0;i<20;i++) {
tmp = data[i];
for(j=1;j<20;j++)
{
if(strcmp(tmp,data[j]))
//then except the uniqueness, store them in elsewhere
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我对此进行编码时,结果很糟糕.(我处理了所有内存,小东西等)问题显然在第二个循环中:D.但我想不出任何解决方案.如何在数组中找到唯一的字符串.
输入示例:abc def abe abc def deg输入唯一的输入:应找到abc def abe deg.
我有这个功能:
public static string Join(this IEnumerable<string> strings, string separator)
{
return string.Join(separator, strings.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
我要记录.
我希望<return>标签能够说明,string.Join(separator, strings.ToArray())因为任何能够阅读C#代码的人都会说超过一千个单词.但是,当我使用时
<return>string.Join(separator, strings.ToArray())</return>
Run Code Online (Sandbox Code Playgroud)
然后string.Join(separator,strings.ToArray())将被格式化为纯文本,这使得它几乎不可读.所以我试过了
<return><code>string.Join(separator, strings.ToArray())</code></return>
Run Code Online (Sandbox Code Playgroud)
但这总是创造一个新的段落......
所以这是我的问题:
有没有办法格式化一段文本,使它看起来好像是代码?我对固定宽度的字体感到满意.
在我正在进行的API实现中,需要在执行某项任务之前暂时重复更改某些变量,并在完成任务之后将其更改回原来的任何变量.
当前代码如下所示:
var _oldValue = _variable;
_variable = tempValue;
try
{
doIt();
}
finally
{
_variable = oldValue;
}
Run Code Online (Sandbox Code Playgroud)
这么做很烦人,很难看,很难维护,并且在很多杂乱的情况下掩盖了实际的算法,这只是实现工件.
在C++中,我会创建一个类,它在构造期间的某处存储旧值,并在其析构函数中恢复它:
{
temp_value tmp(variable_, temp_val);
do_it();
}
Run Code Online (Sandbox Code Playgroud)
当尝试在C#中做类似的事情时,我失败了,因为显然C#无法存储对类中其他对象的引用.
那么在C#中我需要做些什么才能消除这种混乱?
PS:随意添加您认为合适的任何其他标签.我没有提出任何问题.
我有以下代码:
set<Key> test;
test.insert(key1);
test.insert(key2);
iter1 = test.find(key1);
iter2 = test.find(key2);
test.erase(iter1);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果删除了key1,我现在可以使用iter2来引用test2中的key2吗?
谢谢
考虑这样一个野兽:
template<typename Func>
void register_function(Func func) {
// type-erase Func and pass it on to some other function
}
Run Code Online (Sandbox Code Playgroud)
假设这可以传递给任何可调用的东西.
如果Func是普通函数类型,我知道如何获取函数的签名.鉴于它func可以是普通函数,std::function<F>函数或函数对象(std::bind()表达式),我如何得到函数的参数?
注意:
std::bind()需要签名才能获得参数的类型,这些类型需要在传递的类型擦除的东西中使用
这是严格的C++ 03(嵌入式平台),所以没有变量模板参数等.
我有一个std ::对象列表.列表已排序,必须保持这种状态.我需要找到那些满足某个标准的对象(我有一个谓词),将它们传递给一个函数,然后从列表中删除对象.
编写一个循环来调用std::find_if(),调用其结果(如果有的话),调用list.erase()并将其结果传递给下一次调用的开始迭代器并不难std::find_if().然而,IME发现这样的代码比编写代码更难阅读.
所以我最好使用std lib中的一些算法,而不是编写自己的循环.
一个想法是(ab)使用std::list<>::remove_if():在返回之前调用与谓词匹配的元素的操作true,以便列表删除元素.那是符合标准的吗?(项目本身不会被更改,只会更改他们引用的数据.)
或者你能想出更好的解决方案吗?(同样,主要目标是使其易于阅读和理解.)也许是因为我刚刚遇到它,但对我来说,似乎这对于一系列对象来说可能不是一种不常见的使用模式.
注意:暂时,我们坚定地陷入了C++ 03的土地.:-/C++ 11/14/17解决方案很有趣,因此受到欢迎,但我确实需要一些适用于C++ 03的东西.