我完成了一个带有以下依赖项的小型Rust项目(大约300行代码):
在cargo build --release
没有进一步配置的情况下使用时,会生成2.942.744字节(= 2,8 MiB)的二进制数.我尝试通过启用链接时间优化(LTO)来优化这一点Cargo.toml
:
[profile.release]
lto = true
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,二进制文件增长了,新的大小为3.848.288字节(= 3,7 MiB).
怎么解释这个?我配置Cargo有什么错吗?
我正在尝试将字符串转换为long.这听起来很容易,但我仍然得到同样的错误.我试过了:
include <iostream>
include <string>
using namespace std;
int main()
{
string myString = "";
cin >> myString;
long myLong = atol(myString);
}
Run Code Online (Sandbox Code Playgroud)
但总是错误:
.../main.cpp:12: error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'long int atol(const char*)'
Run Code Online (Sandbox Code Playgroud)
发生.参考文献如下:
long int atol ( const char * str );
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
是否有可能获得实际的毫秒数,因为我不知道在C++程序中如System.currentTimeMillis()
Java?我知道time()
,但我认为短时间测量不够,是吗?
我正在使用Rust编程语言学习Rust .我在处理闭包的章节中正在处理以下任务:
尝试修改
Cacher
以保存哈希映射而不是单个值.哈希映射的键将arg
是传入的值,并且哈希映射的值将是在该键上调用闭包的结果.值函数不会查看是否self.value
直接具有值Some
或None
值,而是arg
在哈希映射中查找并返回值(如果存在).如果它不存在,Cacher
则将调用闭包并将结果值保存在与其arg
值相关联的哈希映射中.
这是我的解决方案:
use std::collections::HashMap;
struct Cacher<T>
where
T: Fn(i32) -> i32,
{
calculation: T,
values: HashMap<i32, i32>,
}
impl<T> Cacher<T>
where
T: Fn(i32) -> i32,
{
fn new(calculation: T) -> Cacher<T> {
Cacher {
calculation,
values: HashMap::new(),
}
}
fn value(&mut self, arg: i32) -> i32 {
match self.values.get(&arg) {
Some(v) => *v,
None => { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Qt Creator Code运行一个简单的HelloWorld程序:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行时发生错误
Cannot change to working directory '/home/myusername/build-myproject-Desktop-Debug': file or directory not found
Run Code Online (Sandbox Code Playgroud)
互联网上的许多教程告诉我禁用"在终端中运行",但我需要这个用于我的项目.我的工作目录是/ home/myusername/build-myproject-Desktop-Debug
有帮助吗?
首先要做的事情是:我知道我的问题很可能是基于一般的误解,但我希望我能向你表明我的观点.
我知道在将代码放入C++中的不同文件时,我们确实创建了一个.h(用于定义)和一个.cpp(用于实现).例如,在编写类库时,我必须在头文件中放置私有和公共成员的definitioj.但是,如果 - 出于某种原因 - 我想隐藏用户的私人信息该怎么办?
谢谢!
我在include.h中有一个名为Color,Return_main_menue和Playertype的枚举,如下所示:
enum Color { Red, Orange, Grey, Blue, Green, White, Purple };
enum Return_main_menue { Start, Credits, Help };
enum Playertype { Computer, Human };
Run Code Online (Sandbox Code Playgroud)
我还有一个名为tools.cpp的源文件和tools.h tools.h:
#include "including.h"
Return_main_menue mainmenue();
Run Code Online (Sandbox Code Playgroud)
tools.cpp:
Return_main_menue mainmenue()
{
// function which return Start, Credits or Help
}
Run Code Online (Sandbox Code Playgroud)
我在main.cpp中使用mainmenue():
Return_main_menue mainm = mainmenue();
Run Code Online (Sandbox Code Playgroud)
但编译器返回错误:
.../einbindung.h:7: error: multiple definition of 'enum Farbe'
.../einbindung.h:7: error: previous definition here
and so on for the other enums
Run Code Online (Sandbox Code Playgroud) 我想使用 .iter_mut()
and.map()
:
fn calculate_distances(planes : &mut Vec<Aeroplane>, x: f64, y: f64) {
fn calculate_distance(x1: &f64, y1: &f64, x2: &f64, y2: &f64) -> f6 { ... }
planes.iter_mut().map(|a| if a.position.is_some() {
let pos: &Position = &a.position.unwrap();
a.distance = Some(calculate_distance(&x, &y, &pos.latitude, &pos.longitude));
});
}
Run Code Online (Sandbox Code Playgroud)
Aeroplane
包含我的实例 Position
结构:
struct Position {
latitude: f64,
longitude: f64,
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我只是借用了位置信息并没有移出任何东西,但是借用检查器拒绝了我的代码:
fn calculate_distances(planes : &mut Vec<Aeroplane>, x: f64, y: f64) {
fn calculate_distance(x1: &f64, y1: &f64, x2: &f64, y2: &f64) -> f6 …
Run Code Online (Sandbox Code Playgroud)