我希望能够通过计时库获得纳秒精度,但我无法弄清楚如何转换std::chrono::high_resolution_clock::now()成long int.我试过这个:
#include <chrono>
#include <iostream>
using namespace std;
int main() {
typedef std::chrono::high_resolution_clock Clock;
long int val = Clock::now();
cout << val << endl;
cin.ignore();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:error C2440: 'initializing' : cannot convert from 'std::chrono::system_clock::time_point' to 'long'
我怎样才能将它转换为64位int?如果我不能,那么我不知道计时器是如何有用的.
出于某种原因,(我是C#的新手并且知道java和c ++)当我想通过值传递时,C#会继续复制对象.我有一个Vector2类的arraylist ,每当我想增加一个值时,我必须这样做:
Vector2 d = (Vector2) myObjects[i];
d.Y++;
myObjects [i] = d;
Run Code Online (Sandbox Code Playgroud)
我希望能够这样做:
Vector2 d = (Vector2) myObjects[i];
d.Y++;
Run Code Online (Sandbox Code Playgroud)
并完成.我在网上搜索,令人惊讶的是没有答案.顺便说一句,矢量是一个结构.
我有一个vector的unique_ptrs表示指向一个名为状态类.当我pop_back()使用向量调用时,唯一指针将从内存中删除(我认为),但它指向的状态对象永远不会被删除.在删除它指向的对象时,或者唯一指针以某种方式不会调用析构函数?我所知道的是,当从向量中移除我的唯一指针时,我的析构函数不会被调用.
这是矢量:
std::vector< std::unique_ptr<State> > mStates;
Run Code Online (Sandbox Code Playgroud)
我试过了:
mStates.pop_back();
Run Code Online (Sandbox Code Playgroud)
这删除了唯一的指针,我认为唯一的指针将为我删除状态并调用状态的析构函数,但这没有发生.顺便说一下我用以下方法添加元素:
mStates.push_back();
Run Code Online (Sandbox Code Playgroud) 我需要一个全局函数指针数组,并提出了这个:
static int (*myArray[5])();
Run Code Online (Sandbox Code Playgroud)
如果我是对的,这是"返回int的函数的全局指针数组".是对的吗?或者它是"返回静态int的函数的指针数组".我只需要快速回答.
出于某种原因,每当我这样做:
public class Main {
public static void main(String[] args) {
boolean c = true;
int i = 0;
while (i < 10) {
System.out.println(c);
c = false;
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
true每次打印都会打印出来.
编辑:我运行了几次,比它第五次运行!我很迷惑.我想我错了......我想.
我不明白这段代码是如何工作的:
class AAA {
public:
short a, b;
};
AAA &getRef() {
AAA aaa = {2, 6};
return aaa;
} // 'aaa' is destroyed here right?
int main() {
AAA &ref = getRef();
cout << ref.a << ", " << ref.b << endl;
cin.ignore();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不应该有一个错误试图访问ref.a和ref.b?当我使用指针时,我也没有得到错误.我的意思是,每次打印"2,6" .
编辑:是因为内存仍设置为这些数字?