小编Dan*_*ani的帖子

延迟执行中的数组子字符串

在LINQ中是否有任何方法可以在延迟执行中获取数组的子集(意味着在枚举时复制,而不是构建时)?

c# linq

5
推荐指数
1
解决办法
117
查看次数

php str_replace替换自己

我需要更换一个字母的每一次出现a,o,i,e,u[aoieu]?
我试图做到以下几点:

str_replace(array('a', 'o', 'i', 'e', 'u'), '[aoieu]?', $input);
Run Code Online (Sandbox Code Playgroud)

但是当给予它输入black而不是给我预期bl[aoieu]?ck它给了我

bl[a[ao[aoi[aoie[aoieu]?]?[aoieu]?]?[aoie[aoieu]?]?[aoieu]?]?[aoi[aoie[aoieu]?]?[aoieu]?]?[aoie[aoieu]?]?[aoieu]?]?ck
Run Code Online (Sandbox Code Playgroud)

如何才能让它不能替换已经更换过的东西?

php str-replace

5
推荐指数
1
解决办法
1586
查看次数

展开角度为360

如何展开角度以在[0,360]中产生角度?
我可以做这个:

int unwind(int angle)
{
    while(angle < 0) angle += 360;
    while(angle >= 360) angle -= 360;
}
Run Code Online (Sandbox Code Playgroud)

但我很确定有一种方法可以在没有循环的情况下做到这一点.我也试过,angle % 360但这对负角度(-60 % 360 == -60)不起作用.

c++ angle

5
推荐指数
1
解决办法
1314
查看次数

glEnable和glEnableClientState有什么区别?

glEnable和glEnableClientState有什么区别?每当我需要一个模式设置/未设置时,我必须查看引用以了解哪些将接受它.在那里有任何一般规则,说什么模式进入哪一个?

opengl

5
推荐指数
1
解决办法
2280
查看次数

创建可变参数仅接受引用或指针

我可以创建一个只接受指针的可变参数模板:

template<typename ... Types>
void F(Types *... args);
Run Code Online (Sandbox Code Playgroud)

或者只接受引用的可变参数模板:

template<typename ... Types>
void F(Types &... args);
Run Code Online (Sandbox Code Playgroud)

如何创建一个接受非const引用或指针的模板?
例如

int a, b, c;
F(a, &b); // => F<int &, int *>
F(a, 3); // Error, 3 not pointer and cannot bind to non const-reference
Run Code Online (Sandbox Code Playgroud)

注意:参考版本可能看起来没问题,因为它可以绑定到指针引用但不是因为它不会绑定到 int * const

c++ variadic-templates c++11 template-argument-deduction

5
推荐指数
1
解决办法
196
查看次数

模板运算符链接器错误

我有一个链接器错误,我已将其简化为一个简单的示例。构建输出是:

debug/main.o: 在函数log& log::operator<< (char const (&) [6])' collect2: ld 返回 1 退出状态main':
C:\Users\Dani\Documents\Projects\Test1/main.cpp:5: undefined reference to

看起来链接器忽略了 log.cpp 中的定义。
我也无法将定义放入 log.h 中,因为我多次包含该文件,并且它抱怨重新定义。

主要.cpp:

#include "log.h"

int main()
{
    log() << "hello";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

日志.h:

#ifndef LOG_H
#define LOG_H

class log
{
public:
    log();
    template<typename T>
    log &operator <<(T &t);
};

#endif // LOG_H
Run Code Online (Sandbox Code Playgroud)

日志.cpp:

#include "log.h"
#include <iostream>

log::log()
{
}

template<typename T>
log &log::operator <<(T &t)
{
    std::cout << t << std::endl;
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

c++ linker templates

4
推荐指数
1
解决办法
1031
查看次数

读取文件的最后一行

我有一个大文件,我只需要从它的最后一行(\n只有行分隔符).
我需要在iOS设备上完成这项工作,因此它不会花费太多内存或CPU时间(比如读取整个文件).
如何在Objective-C,c ++或c ++ 11中执行此操作?

c++ file-io objective-c

4
推荐指数
1
解决办法
4009
查看次数

关于std :: map存储的布局有什么保证吗?

布局有什么保证std::map吗?我知道std::vector标准保证让所有对象顺序开始*vector.begin(),是否有类似的保证std::map

c++ storage map

4
推荐指数
1
解决办法
234
查看次数

来自文件字符串的dictionaryWithContentsOfFile

我想NSDictionary从plist 加载一个,我在内存中有plist字符串,我没有plist文件.NSDictionary dictionaryWithContentsOfFile:只接受文件名,它不接受文件字符串.如何NSDictionary使用plist文件加载?

objective-c nsdictionary

3
推荐指数
1
解决办法
1085
查看次数

尾调用递归

我正在实现如下函数:

void Add(list* node)
{
    if(this->next == NULL)
        this->next = node;
    else
        this->next->Add(node);
}
Run Code Online (Sandbox Code Playgroud)

因为它似乎Add会在递归的每一步都被尾调用.
我也可以实现它:

void Add(list *node)
{
    list *curr = this;
    while(curr->next != NULL) curr = curr->next;
    curr->next = node;
}
Run Code Online (Sandbox Code Playgroud)

这根本不会使用递归.
哪个版本更好?(在堆栈大小或速度上)
请不要给出"为什么不使用STL/Boost/what?" 意见/答案.

c++ tail-recursion

3
推荐指数
2
解决办法
398
查看次数