constexpr void X() {
/* code, that can be executed at compiletime */
}
void X() {
/* code, that does the same as above, but is optimized for runtime, eg.
including caching, assembler code, ... to optimize runtime performance */
}
Run Code Online (Sandbox Code Playgroud)
如上所示,我想要两个函数,它们基本上都在做相同的事情,一个针对运行时进行了优化,一个针对编译时进行了优化。在我的示例中,运行时版本涉及缓存,这不能在constexpr中完成,但可以提高运行时的性能。
可以通过某种方式(使用C ++ 14)实现吗?
如果只能使用特定于编译器的解决方案来实现此目的,那么它们也可以,但是我更喜欢一种标准解决方案(当前,我不知道有一个解决方案)
有没有办法将可变参数函数强制转换为这样的函数指针,这是合法的吗?我要求C和C++,但由于这个结构存在于两种语言中,我将两个问题都放在一起.
extern int test(int, ...);
auto testptr = (int(*)(int, int, long)) &test;
Run Code Online (Sandbox Code Playgroud)
谢谢,杰克
我想在运行时增长:: std :: vector,像这样:
::std::vector<int> i;
i.push_back(100);
i.push_back(10);
Run Code Online (Sandbox Code Playgroud)
在某些时候,向量已经完成,并且我不需要额外的功能:: std :: vector可以提供更多的功能,因此我想将其转换为C数组:
int* v = i.data();
Run Code Online (Sandbox Code Playgroud)
因为我将不止一次这样做,所以我想释放所有保留的堆内存:: std :: vector,但是我想保留数据,就像那样(伪代码):
free(/*everything from ::std::vector but the list*/);
Run Code Online (Sandbox Code Playgroud)
有人可以给我一些指导吗?
预先感谢,杰克