小编Dar*_*m97的帖子

获取连接范围列表的索引

我有一个范围列表,该列表中的所有范围都具有相同的startstop,但不相同step
例如:

[range(0, 10, 2), range(0, 10, 3)]
Run Code Online (Sandbox Code Playgroud)

当然,列表可以包含不止 2 个范围。
连接的范围列表代表以下数字:

[0, 2, 3, 4, 6, 8, 9]
Run Code Online (Sandbox Code Playgroud)

我想获取x连接范围列表的索引。
例如,最后一个示例的 5 索引将为8.

问题是范围可能很大(数百万),我不想将该范围变成列表来获取x索引。我需要以某种方式计算该x索引的值而不“打开”该范围列表

尝试了几个小时来想出一种算法来做到这一点,我发现的最佳解决方案包括使用二分搜索来做到这一点,我认为这不是这样做的理想方式。

知道我怎样才能做到这一点吗?

python range

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

从无序点获取多边形

我使用 Shapely 库来处理多边形。它有一个名为的类Polygon,它获取一组有序的坐标并将它们转换为多边形。
问题是我得到了一组无序坐标。我想要包裹所有点的多边形。

我一直在研究 Shapley 文档,但找不到任何有关如何操作的信息

在将点发送到之前是否有一种算法可以对点进行排序Polygon?或者还有其他方法可以做到这一点吗?

python polygon

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

编译器忽略函数参数的'const'

我有编译错误的问题,看看这段代码:

template<class T>
struct MyStruct
{
};

template<>
struct MyStruct<int>
{
    typedef int* type;
};

template<class T>
void foo(const typename MyStruct<T>::type myType)
{
}

int main()
{
    const int* ptr = NULL;
    foo<int>(ptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是编译器忽略了foo函数上的'const',使得对foo的调用非法(const int*to int*).

严重级代码描述项目文件行抑制状态错误C2664'void foo(const MyStruct :: type)':无法将参数1从'const int*'转换为'const MyStruct :: type'

我在Visual Studio和gcc的5.3编译器中测试了以下代码,它们都丢失了同样的错误.

编译器是故意这样做的吗?为什么会这样?

c++ gcc templates visual-studio

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

多线程 - 每个核心的线程

我有这个代码:

#define threadsNum 4

DWORD WINAPI func(LPVOID vpParam)
{
    long long sum = 0;

    for(int i = 0; i < 400000 / threadsNum; i++)
    {
        for(int j = 0; j < 160000 / threadsNum; j++)
        {
            sum = sum > 1000 ? 0 : sum + 1;
        }

    }

    return 1;
}


int main()
{
    clock_t timer = clock();

    int CPUs = 4;
    DWORD_PTR threadCore = 1;
    DWORD_PTR threadID = 0;
    int addNum = 0;

    void* *threads = new void*[threadsNum]; …
Run Code Online (Sandbox Code Playgroud)

c++ windows performance multithreading

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

glDrawElements绘制多边形

我已经阅读了glDrawElements的第一个参数是mode:http : //www.opengl.org/sdk/docs/man3/xhtml/glDrawElements.xml

接受符号常量GL_POINTS,GL_LINE_STRIP,GL_LINE_LOOP,GL_LINES,GL_LINE_STRIP_ADJACENCY,GL_LINES_ADJACENCY,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN,GL_TRIANGLES,GL_TRIANGACE_STRIP_ADIP_ADJACEY。

我看不到GL_POLYGON。就是说我不能使用GL_POLYGON?如果我有10个索引?我是否需要将其转换为几个包含三个索引的多边形?如果是真的,该怎么办?

c++ opengl 3d polygon

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