我做了一个简单的测试,我知道C++更快但我的测试结果不切实际.
C++代码是:
#include <stdio.h>
#include <windows.h>
unsigned long long s(unsigned long long n)
{
unsigned long long s = 0;
for (unsigned long long i = 0; i < n; i++)
s += i;
return s;
}
int main()
{
LARGE_INTEGER freq, start, end;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
printf("%llu\n", s(1000000000));
QueryPerformanceCounter(&end);
double d = (double) (end.QuadPart - start.QuadPart) / freq.QuadPart * 1000.0;
printf("Delta: %f\n", d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Java代码是:
public class JavaApplication5 {
public static long s(long n) {
long s = …Run Code Online (Sandbox Code Playgroud) 这是代码段.
typedef struct Lib3dsMesh {
//..
float (*vertices)[3];
//..
}
void* lib3ds_util_realloc_array(void *ptr, int old_size, int new_size, int element_size) {
// Do something here.
return ptr;
}
mesh->vertices = lib3ds_util_realloc_array(mesh->vertices, mesh->nvertices, nvertices, 3 * sizeof(float));
Run Code Online (Sandbox Code Playgroud)
当我在visual c ++中编译此代码时,它返回错误"无法从void*转换为float(*)[3]".
我想知道如何将void*转换为float(*顶点)[3];
在许多编译器中,标准数据结构类似于Set,Map并Multimap在后面使用Red-Black-Trees,并multimap存储多个和重复的键.
我有一个关于以下引用的问题:
"红黑树唯一地存储密钥,并且只为每个密钥绑定一个DataValue"
multimap(如C++ STL所做的那样)?我有一个由fortran代码生成的二进制文件.该文件包含一系列双精度数.我需要在我的C程序中打开它,然后像通常的数组一样使用它.
我该怎么做?
二进制文件中如何表示double类型?
我们知道编译器可以重用相同的常量字符串文字来有效地节省内存.对于编译器,此优化是可选的.
const char *s1 = "HELLO";
const char *s2 = "HELLO";
Run Code Online (Sandbox Code Playgroud)
s1并且s2可以有相同的地址.它们在许多编译器中具有相同的地址.例如,两者都指向地址0x409044.
好.
在我看来,问题是,为什么不std::string尝试具有相同的优势?并且它不会试图包围std::string该地址.
const std::string ss1("HELLO");
const std::string ss2("HELLO");
cout << (void*) ss1.c_str() << endl;
cout << (void*) ss2.c_str() << endl;
Run Code Online (Sandbox Code Playgroud)
ss1并ss2有两个不同的地址.
这在技术上是不可能的吗?被语言禁止?或者标准库的实现开发人员不想要它?
我想创建一个类,它具有指向其方法之一作为属性的指针.然后应该有一个方法,用于设置此指针.
class A {
private:
void (A::*curr_f)();
public:
void set(void (A::*f)()) {
curr_f = f;
}
};
Run Code Online (Sandbox Code Playgroud)
当我尝试创建继承的类并将指针设置为其方法之一时,问题就开始了.
class B : A {
public:
void main() {
set(&B::new_function);
};
void new_function() {};
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误非常简单,但我仍然不知道如何解决这个问题.
error: no matching function for call to ‘B::set(void (B::*)())’
note: candidate is:
note: void A::set(void (A::*)())
note: no known conversion for argument 1 from ‘void (B::*)()’ to ‘void (A::*)()’
Run Code Online (Sandbox Code Playgroud) let index1 = arc4random_uniform(10);
let x = array[index1];
Run Code Online (Sandbox Code Playgroud)
第二行是给出以下错误
could not find an overload for 'subscript' that accepts the supplied argumentsRun Code Online (Sandbox Code Playgroud)let x = array[index1]; ^~~~~~~~~~~~~
最近,我发现了两个数学函数的qmath.h命名qFastSin和qFastCos.这些函数是inline并使用查找表来计算sin和cos的值:
inline qreal qFastSin(qreal x)
{
// Calculating si would be more accurate with qRound, but slower.
int si = int(x * (0.5 * QT_SINE_TABLE_SIZE / M_PI));
qreal d = x - si * (2.0 * M_PI / QT_SINE_TABLE_SIZE);
int ci = si + QT_SINE_TABLE_SIZE / 4;
si &= QT_SINE_TABLE_SIZE - 1;
ci &= QT_SINE_TABLE_SIZE - 1;
return qt_sine_table[si] + (qt_sine_table[ci] - 0.5 * qt_sine_table[si] * d) * d;
}
inline qreal …Run Code Online (Sandbox Code Playgroud) 按照我之前的问题 ,派生类的受保护成员是未知的
我无法理解那条线的哪一部分是错的,不知道吗?
这里有一个编译错误:
template <typename K, typename T>
bool graph<K, T>::is_edge(const K& k1, const K& k2)
{
if (this->nod.find(k1) == this->nod.end() || this->nod.find(k2) == this->nod.end())
throw std::string("is_edge: Node does not exist");
if (k1 < k2) // Below line makes error: expected primary-expression!!!!
return std::find(this->edg.begin(), this->edg.end(), edge(k1, k2)) != this->edg.end();
return std::find(this->edg.begin(), this->edg.end(), edge(k2, k1)) != this->edg.end();
}
Run Code Online (Sandbox Code Playgroud)
或者,这句话有什么不对:
std::find(this->edg.begin(), this->edg.end(), edge(k1, k2)) != this->edg.end();
Run Code Online (Sandbox Code Playgroud)
我试图了解如何schedule(runtime)在C++中使用OpenMP 的指令.经过一些研究,我发现OMP_SCHEDULE(1)并且OMP_SCHEDULE(2).
我总结说我需要将varibale OMP_SCHEDULE设置为某个值.但是,我不知道该怎么做,我还没有找到任何可行的C++示例来解释我如何正确地这样做.
有人可以解释一下如何设置变量并提供一个有效的C++示例吗?