小编Aka*_*all的帖子

使用std :: begin(),std :: end()将ArrayXd转换为stl向量,

在我看来,我应该能够使用std::begin()std::end()转换ArrayXdstd::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 …

c++ arrays eigen

1
推荐指数
1
解决办法
1726
查看次数

返回指向局部变量的指针时的堆栈行为

我有一个简单的例子,其中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)

stack rust

1
推荐指数
1
解决办法
172
查看次数

对于具有多个迭代值的循环

我试图了解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)

python for-loop

1
推荐指数
1
解决办法
151
查看次数

如何检查元素是否在C++中的映射键中?

我很想知道是否有一种方法可以检查地图键中是否包含元素.例如:

#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)

c++

0
推荐指数
2
解决办法
167
查看次数

没有内置的动态数组吗?

我刚开始接受go,我正在审视数据结构.我习惯拥有像listin pythonstd::vectorin 这样的动态数组C++,但我没有看到类似的东西go.关于动态数组的好处是它具有添加新元素的O(1)时间复杂度,以及用于索引的O(1)时间复杂度.

首先我认为slice是这样,但后来我意识到当我使用append函数时,整个切片被复制,因此它是O(N)操作而不是动态数组中的O(1).

然后我遇到了列表,但这是一个双向链表,这意味着索引是O(N),而不是O(1).

我错过了我正在寻找的数据结构吗?

go

0
推荐指数
1
解决办法
434
查看次数

究竟是什么.(data_type)方法调用/ do?

我来了一个使用.(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确实是一个字符串,这可以用来告诉编译器变量是某种类型的.我的理解是对的吗?

goplayground

go

0
推荐指数
1
解决办法
104
查看次数

用"|〜|"拆分字符串 在斯卡拉

在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中用字符串拆分字符串, 似乎我的代码应该可以工作,但事实并非如此.我错过了什么?我如何获得所需的输出?

scala

0
推荐指数
1
解决办法
191
查看次数

在python中初始化或附加字典列表

以下代码片段可以以某种方式简化为一个语句吗?

if aKey not in aDict:
    aDict[aKey] = [someValue]
else: 
    aDict[aKey].append(someValue)
Run Code Online (Sandbox Code Playgroud)

我可以写一个函数接受aDict,aKeysomeValue,但有没有办法做到这一点只使用原生的Python的东西?

python dictionary initialization list

0
推荐指数
1
解决办法
83
查看次数

反向int golang

如何更改1234554321?使用字符串,您可以将字符串更改为rune,然后将其反转,但是不能对整数进行相同的操作。我搜索后发现没有人在谈论这一点。示例
131415>>> 514131
1357>>> 7531
123a>>> 错误
-EDIT-
我在想,为什么不创建一个sliceand index that?
然后我意识到您无法索引int
http://play.golang.org/p/SUSg04tZsc
我的新问题是
如何索引一个int?
如何反转一个int?

indexing int go

0
推荐指数
1
解决办法
2568
查看次数

Python-将字典应用于列表,同时保留其他元素

我有一个列表 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)

任何帮助,将不胜感激。

python dictionary

0
推荐指数
1
解决办法
767
查看次数

标签 统计

go ×3

python ×3

c++ ×2

dictionary ×2

arrays ×1

eigen ×1

for-loop ×1

indexing ×1

initialization ×1

int ×1

list ×1

rust ×1

scala ×1

stack ×1