在我看来,我应该能够使用std::begin()并std::end()转换ArrayXd为std::vector<double>; 但是,当我在下面的代码中尝试它时,我的尝试失败了.我的理解是,.data()任何Eigen对象上的方法都返回一个指向连续内存块的指针,类似于c样式数组.因此,因为我可以使用std::begin(),std::end()在ac风格的数组,我希望也可以使用.data().然而,Eigen类是模板化的,我认为这是导致我出现问题的原因,但是没有办法解决这个问题.该怎么做?
#include <iostream>
#include <vector>
#include <Eigen/Dense>
using namespace Eigen;
int main()
{
ArrayXd e_array(5);
e_array << 3,4,5,6,7;
double c_array[] = {1,2,3,4,5};
//Fails
// std::vector<double> my_vec(std::begin(e_array.data()), std::end(e_array.data()));
// Works
// std::vector<double> my_vec(e_array.data(), e_array.data() + 5);
// Works
// std::vector<double> my_vec(std::begin(c_array), std::end(c_array));
// Works
// std::vector<double> my_vec(c_array, c_array + 5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的错误信息(第一行,整个消息很长):
错误:没有匹配函数调用'begin(Eigen :: PlainObjectBase> :: Scalar*)'std :: vector my_vec(std …
我有一个简单的例子,其中Rust的行为与我的心理图像不匹配,所以我想知道我错过了什么:
fn make_local_int_ptr() -> *const i32 {
let a = 3;
&a
}
fn main() {
let my_ptr = make_local_int_ptr();
println!("{}", unsafe { *my_ptr } );
}
Run Code Online (Sandbox Code Playgroud)
结果:
3
Run Code Online (Sandbox Code Playgroud)
这不是我所期望的.使用堆栈和堆中给出的符号
我希望堆栈框架看起来像这样:
Address | Name | Value
-----------------------
0 | a | 3
Run Code Online (Sandbox Code Playgroud)
在里面make_local_int_ptr(),但在此之后,
let my_ptr = make_local_int_ptr();
Run Code Online (Sandbox Code Playgroud)
由于a超出范围,我希望堆栈被清除.但它显然没有.
此外,如果我在创建my_ptr和打印它的解除引用值之间定义另一个变量:
fn main() {
let my_ptr = make_local_int_ptr();
let b = 6;
println!("{}", b); // We have to use b otherwise Rust
// compiler …Run Code Online (Sandbox Code Playgroud) 我试图了解Python FOR LOOP中的多个值是如何工作的.我试图创建自己的测试,但它不起作用.为什么?谢谢!
我的测试:
myList = [4, 5, 7, 23, 45, 65, 3445, 234, 34]
for i, b in myList:
print ("first= %d, second= %d" % (i, b))
Run Code Online (Sandbox Code Playgroud) 我很想知道是否有一种方法可以检查地图键中是否包含元素.例如:
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<char, int> mymap;
mymap['a'] = 1;
mymap['b'] = 2;
mymap['z'] = 26;
// I want to check if 'b' is one of the keys in map mymap.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
元素'a','b'和'z'是地图mymap的关键.我想要一个命令,true如果元素在地图的键中,并且false元素不在地图的键中,则返回该命令.我环顾四周,但可以找到一个快速的内置方法来做到这一点.我错过了什么吗?有这样的方法吗?
这是一个很长的路,可以得到我想要的结果:
#include<iostream>
#include<map>
using namespace std;
bool check_key(map<char, int> mymap, char key_val);
int main()
{
map<char, int> mymap;
mymap['a'] = 1;
mymap['b'] = 2;
mymap['z'] = 26;
char key_val = 'h';
cout<<mymap.find('z')->first<<endl;
cout<<"checking "<< check_key(mymap, 'h')<<endl; …Run Code Online (Sandbox Code Playgroud) 我来了一个使用.(string)方法的代码.我不知道这叫什么,我很难找到它.
这是我尝试理解它:
package main
import "fmt"
import "reflect"
func main(){
var b interface{}
b = "silly"
fmt.Println(reflect.TypeOf(b.(string))) // we know that b
// is a string
// at compile time
fmt.Println(reflect.TypeOf(b)) // we do not
}
Run Code Online (Sandbox Code Playgroud)
结果:
string
string
Run Code Online (Sandbox Code Playgroud)
但是,我认为这reflect.TypeOf是在运行时发生的,同时.(string)会告诉编译器b确实是一个字符串,这可以用来告诉编译器变量是某种类型的.我的理解是对的吗?
在python我可以这样做:
In [4]: "string1|~|string2".split("|~|")
Out[4]: ['string1', 'string2']
Run Code Online (Sandbox Code Playgroud)
但是,scala中的相同代码并没有给出预期的输出:
scala> "string1|~|string2".split("|~|")
res3: Array[java.lang.String] = Array("", s, t, r, i, n, g, 1, |, ~, |, s, t, r, i, n, g, 2)
Run Code Online (Sandbox Code Playgroud)
我调查了这个问题如何在Scala中用字符串拆分字符串, 似乎我的代码应该可以工作,但事实并非如此.我错过了什么?我如何获得所需的输出?
以下代码片段可以以某种方式简化为一个语句吗?
if aKey not in aDict:
aDict[aKey] = [someValue]
else:
aDict[aKey].append(someValue)
Run Code Online (Sandbox Code Playgroud)
我可以写一个函数接受aDict,aKey和someValue,但有没有办法做到这一点只使用原生的Python的东西?
如何更改12345为54321?使用字符串,您可以将字符串更改为rune,然后将其反转,但是不能对整数进行相同的操作。我搜索后发现没有人在谈论这一点。示例
131415>>> 514131
1357>>> 7531
123a>>> 错误
-EDIT-
我在想,为什么不创建一个sliceand index that?
然后我意识到您无法索引int
(http://play.golang.org/p/SUSg04tZsc)
我的新问题是
如何索引一个int?
或
如何反转一个int?
我有一个列表 a,定义如下:
a = ['3', 'A', '+', 'Q', '2', '/', '*']
Run Code Online (Sandbox Code Playgroud)
我有一本字典 d,定义如下:
d = {'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6' : 6, '7': 7, '8': 8, '9': 9, '0': 10, 'J': 11, 'Q': 12, 'K': 13}
Run Code Online (Sandbox Code Playgroud)
我想将字典应用于字典中的列表元素,包括 3、A、Q 和 2,同时将操作保留在相同位置并采用相同的字符串格式。我尝试使用列表理解,但也尝试将其应用于操作。
我想要的输出如下:
a = [3, 1, '+', 12, 2, '/', '*']
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。