小编Joh*_*erg的帖子

有没有python方法根据提供的新索引重新排序列表?

假设我有一个工作清单:['a','b','c']和索引列表[2,1,0],它会将工作清单更改为:['c','b','a "]

是否有任何python方法可以轻松完成此任务(工作列表也可能是一个numpy数组,因此更适合使用更具适应性的方法)?谢谢!

python numpy

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

Stringstream to vector <int>

我想知道什么是最好的方法,从一个写std::stringstreamvector<int>.

以下是以下内容的示例stringstream: "31 #00 532 53 803 33 534 23 37"

这是我得到的:

int buffer = 0;
vector<int> analogueReadings;
stringstream output;

 while(output >> buffer)
     analogueReadings.push_back(buffer);
Run Code Online (Sandbox Code Playgroud)

然而,似乎发生了什么,它首先读取,然后它到达#00并返回,0因为它不是一个数字.

理想情况下,我想要的是,它到达a #然后只是跳过所有字符直到下一个空格.这可能是旗帜或其他什么?

谢谢.

c++ stringstream visual-studio-2010 lexical-cast

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

使用Git bash生成密钥时出现问题

无法使用Git bash生成密钥

给出错误错误转义字符'ygen'

在运行密钥生成命令时ssh -keygen -t rsa -C""

git ssh ssh-keys git-bash

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

为什么std :: sort()比std :: make_heap()更快?

我有自己的13721057元素std::vector<Sequence>.我需要对这个向量进行排序并获取前25个元素.我想,因为你可以构建一个堆,O(N)它必须更快地弹出25个元素(每个都是O(logN))比排序整个向量更快O(NlogN).

但是,当我计算代码时:

clock_t tStart = clock();
sort(mostFrequent.begin(), mostFrequent.end(), greater<Sequence>());
printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
Run Code Online (Sandbox Code Playgroud)

clock_t tStart = clock();
make_heap(mostFrequent.begin(), mostFrequent.end());
printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
Run Code Online (Sandbox Code Playgroud)

对整个矢量进行排序似乎要快得多.为什么是这样?

c++ sorting algorithm vector c++11

4
推荐指数
2
解决办法
1219
查看次数

热图颜色键有五种不同的颜色

我有以下代码,不知道如何使用它来显示带有颜色键的热图,显示代表定义值的五种不同颜色:

hm <- heatmap.2(data_matrix, scale="none",Rowv=NA,Colv=NA,col = rev(brewer.pal(11,"RdBu")),margins=c(5,5),cexRow=0.5, cexCol=1.0,key=TRUE,keysize=1.5, trace="none")
Run Code Online (Sandbox Code Playgroud)

需要颜色键:

<0.3 (blue)

0.3-1 (green)

1-1.3 (yellow)

1.3-3.0 (orange)

>3.0 (red)
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供帮助,我会很高兴.谢谢!

詹姆士

r heatmap

3
推荐指数
1
解决办法
2万
查看次数

模板元编程:( trait for?)将指定的模板解析为T <T2,T3 N,T4,...>

我试图T从一个类型中推断出底层模板类型E = T<T2,T3>.这将使例如可以制作模板函数pair_maker(const E&a),其可以与几种类似类型的容器中的一种一起使用.粗糙的元代码:

template <typename T>
auto pairmaker(const E & a) -> PairContents<E,std::string>::type {
    ContainerPairMaker<E,std::string>::type output;
    ... some code ...
    return output;
}
Run Code Online (Sandbox Code Playgroud)

PairContents<E,std::string>

将类型vector<int>转换为vector<pair(int,std::string)>whatever<T1>转换为whatever<pair(T1,std::string)>.

类型剖析的另一个类似示例是std :: array(或类似的容器),我想在其中找出容器类型来创建一个新的类似数组.例如,对于这些类型的功能(这是现在的实际工作代码)

template <typename T > 
auto make_some3(const T & a) 
           -> std::array<typename T::value_type,10*std::tuple_size<T>::value>{   
   return std::array<typename T::value_type,10*std::tuple_size<T>::value>{} ;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我所追求的是自动显式使用'std :: array'.

对于std :: array,有tuple_size特性有帮助,类似的东西可以用于查找type任何第二个参数,但我再也想不出任何用于查找容器类型的东西.

总结一下:什么样的机器(如果有的话)可以用于这样的情况.在多大程度上可以处理模板参数,模板模板参数,任意数量的参数和未知类型的非模板参数的混合.

c++ templates metaprogramming c++11

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

准确创建[a,b]范围内的浮点值

考虑

auto x = a + (b-a)*v;
Run Code Online (Sandbox Code Playgroud)

其目的是要建立在范围内的值[a,b)由系数v[0,1.0).从纯数学的角度来看x>=a,和x<b.但是,我们如何证明或确保这适用于浮点? a,b,v是同一类型的非负的有限浮点值(doublefloat)和b>a(最初称b>=a这是与我的要求明显不符x),和v<=netxtafter(1.0,0)(也就是说,它只是低于1.0).

这似乎是显而易见的,b-a >0因此(b-a)*v >=0我们不需要检查:

if (x<a) return a;
Run Code Online (Sandbox Code Playgroud)

但这也是多余的吗?

if (x>=b) return std::nextafter(b,a);
Run Code Online (Sandbox Code Playgroud)

可能编译器(优化)重写表达式来影响这些问题吗?浮点表示的类型是否输入?(我最感兴趣的是最常见的(iec559/IEEE 754).

c++ floating-point

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

NameError:未定义名称"self" - 尝试将值发布到不同的队列时

这是正确的做法.我是一个新手蟒蛇

class main(threading.Thread):
    queueLock = threading.Lock()
    EppQueue = Queue.Queue(1)
    CrQueue = Queue.Queue(1)
    EPP = threading.Thread(name='EPP', target=EPP, args=(0,EppQueue,))
    cr = threading.Thread(name='cr', target=CR, args=(0,CrQueue,))
    EPP.setDaemon(True)
    EPP.start()
    Cr.start()
    self.send_queue("EppQueue","sss")
    self.send_queue("CrQueue","ssds")

    def send_queue(self,queuename,qvalue,b=None):
        if b is None:
            b = self.queuename
        self.queueLock.acquire()
        self.b.put(qvalue)
        self.queueLock.release()
Run Code Online (Sandbox Code Playgroud)

当我运行这个我得到NameError:名称'自己'没有定义???

python queue

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

这种引用的使用不正确吗?

我有以下代码:

std::vector<A>& Get() { return some_object; };

for(int i=0; i<Get().size(); ++i) {
    x->push_back(Get()[i]);
}
Run Code Online (Sandbox Code Playgroud)

但是当我第一次调用size()时,我得到了垃圾值.我想某些临时的东西会被删除,但我不确定...有人能告诉我发生了什么吗?

编辑:我some_object是一个静态向量,所以在这个例子中它永远不会被删除

c++ reference temporary

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

在从std :: vector移动时调用.clear(),. shrink_to_fit(),. empty()是否合法?

作为这两个问题的具体子句:

移动的向量是否总是空的?

移动物体怎么办?

人们不禁要问:是合法的调用.clear(),.chrink_to_fit(),.empty()在移动,从std::vector给它分配一个新的载体之前?我可以问一下,push_back()但我不知道会给出什么,因为依靠从向量移动的空是不安全的.

显而易见的是,破坏以及从新载体分配是合法的.

std::vector<int> fs = getVec();
giveVecs(std::move(fs));
fs.empty();  // 1.?
fs.size();   // 2.?
fs.shrink_to_fit(); // 3.?
fs.clear(); // //4. ?
fs = {} ; // 5. Should be fine, but weird when we have .clear()
fs.push_back(1); // 
Run Code Online (Sandbox Code Playgroud)

编辑:

我应该澄清,有些操作确实有前提条件:因此,(正如你可以在其他问题中看到的那样),并非所有操作在移动后都是合法的.

因此,我的问题可以这样重述:三种操作中的任何一种都有任何先决条件吗?问题的一个原因可能是与从对象移动的分配器相关的精细打印.

c++ c++14

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

为什么我需要在C#中实例化一个对象,而不是在C++中为了访问一个类的函数?

我最近开始用C#编写Unity(游戏引擎)开发.我注意到与C++不同; C#要求我在使用其成员函数或变量之前在堆上实例化一个对象.与C++一样,我可以声明一个对象并从声明名称中调用任何函数.

C++示例:

#include <iostream>
using namespace std;
class SampleClass 

{
   void PrintFunc()
   {
      cout<<"Hello World"<<endl;
   }
 }

int main()
{

   SampleClass objectC; //Object declaration
   objectC.PrintFunc(); //Use of function without instantiation

   //The above code will print'Hello World'
}
Run Code Online (Sandbox Code Playgroud)

C#示例:

 using System

 namespace ConsoleProject2
{
    class MainClass
   {

   class SampleClass
   {
        Void PrintFunc()
        {
          Console.WriteLine("Hello World");
        }
    }

    public static void Main (string[] args)
    {

        SampleClass objectC = new SampleClass();
        //Must instantiate before accessing member functions 
        objectC.PrintFunc(); //Prints out 'Hello World' …
Run Code Online (Sandbox Code Playgroud)

c# c++ memory memory-management

-2
推荐指数
1
解决办法
371
查看次数

如何在两个无限循环之间交替?

我想在两个无限循环之间交替; 我该怎么做到这一点.我的代码是这样的:

#include <stdio.h>

int main() {
    // Master loop
    while (1)

    // loop # 1
    while (1) {
        printf("I am in loop #1");
    }

    // loop # 2
    while (1) {
        printf("I am in loop #2");
    }
} // end of master loop
Run Code Online (Sandbox Code Playgroud)

如何在循环#1和循环#2之间切换?我只是测试一个想法来检查/比较两个循环时间(时间)之间的一些结果,以便在时间线中找到一些偏差/错误.

c c++ infinite-loop while-loop

-4
推荐指数
1
解决办法
1376
查看次数