小编Yan*_*ick的帖子

使用比较功能排序功能

我想对2D列表进行排序,其中每个"行"的大小为2,例如

[[2,5],[2,3],[10,11]]
Run Code Online (Sandbox Code Playgroud)

这些行实际上代表了范围,所以它总是[a,b],其中a <= b

我想用这种方式对它进行排序,列表的每个元素都是2个列表,我有(按优先顺序):[a1,b1]与[a2,b2]相比较

 1. If a1 < a2 do not permute
 2. If a1 > a2 permute
 3. If a1 == a2 then permute if (b1 - a1) > (b2 - a2)
Run Code Online (Sandbox Code Playgroud)

我觉得愚蠢的是python不再允许比较功能.相反,它使用一个关键功能.因为我将比较基于两个参数,即'a'的数值(占优势),然后是范围的长度(b-a),我无法制作有效的密钥.

我该怎么办呢?我的意思是,没有调用两次排序()或其他东西,在我看来,这很简单.

它甚至可能吗?或者有什么我看不到的东西?

谢谢!

python sorting python-3.x

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

使QT/QML TextArea滚动到底部

我在 QT/QML 5.11 上遇到了这样一个简单的事情,我几乎认为库中存在一个错误。

我有以下代码:

Flickable {
    id: txflick
    anchors.top: title_label.bottom
    anchors.bottom: crect.bottom
    anchors.right: crect.right
    anchors.left: busy_ind.right

    flickableDirection: Flickable.VerticalFlick

    onContentYChanged: console.log("contentY_changed", this.contentY)
    //contentY: txarea.contentHeight - txarea.height
    interactive: false // Has no effect, contentY keeps changing to zero

    TextArea.flickable: TextArea {
        id: txarea

        topPadding: 8
        bottomPadding: 10
        leftPadding: 10
        rightPadding: 10
        readOnly: true
        text: menu_view.pwrcon.text

        onTextChanged: {
            console.log("text changed")
            txflick.contentY = txarea.contentHeight - txflick.height
            console.log("chg", txarea.contentHeight - txflick.height)
            console.log(text)
        }

        onContentHeightChanged: {
            console.log("ctheight = ___", contentHeight, height, txflick.height, txflick.contentHeight)
        }

        font.family: …
Run Code Online (Sandbox Code Playgroud)

qt qml qt5

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

叠加div之间的间距,不影响宽度

我最近一直试图使用名为Owl-Carousel的脚本来制作div的幻灯片,其中div的间隔为10 px,因此拖动看起来不错.

我制作了完整的代码以显示目的:http: //codepen.io/anon/pen/VLZmWd

我尝试修改边距但没有成功.

CSS如下:

.generic { // header on top of slide, must have wrapper width
  background-color:red;
  height: 30px;
  text-align:center;
}

.item { // item (slide) inside the owl carousel, must have wrapper width
  height: 300px;
  background-color: #7FFFD4;
  //margin-right:10px; // gives the spacing between slides, but works so bad
}

#wrapper { // wraps carousel and elements with generic class
  margin:0px auto;
  width:720px;
  height: auto;
}
Run Code Online (Sandbox Code Playgroud)

如何在相互之间间隔10px,同时保持红色/绿色区域的宽度和.generic类不变.

我希望类".generic"保持不变的原因主要是我对代码的设置方式,因此CSS很容易修改宽度:我有很多不同的类/元素应该采取的包装器宽度,我希望不必为每个设置宽度或设置边距,以实现代码可管理性.

编辑:为了说清楚,当在旋转木马上使用鼠标拖动时,我的目标是在每个幻灯片绿色幻灯片之间看到10px的白色(在codepen中不是这种情况),同时保持绿色区域宽度与红色相同面积宽度.

谢谢

html javascript css css3 owl-carousel

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

WSARecv()和多个缓冲区

我想要一个WSARecv精度.

基本上你似乎可以使用带有WSABUF数组的函数.

1-在没有完成端口的重叠I/O上下文中,假设我在具有48个WSABUF数组的数据报套接字上使用WSARecv(),这是否意味着我可以在一个数据包中接收48个不同的UDP数据包(每个缓冲区1个数据包)打电话(说他们到达同一时刻)?或者接收48个数据包的唯一方法是在事件发出信号后使用WSARecv()48次(使用带事件的重叠I/O但不是完成端口,我再说一遍).

2-在一个上下文WITH I/O完成端口/重叠的I/O,它意味着我可以更换这个

int n = 48;
for (int i = 0; i < n; i++)
   WSARecv(sock, &buffer_array[i], 1, NULL, 0, &overlapped, completion_routine);
Run Code Online (Sandbox Code Playgroud)

有了这个?

WSARecv(sock, buffer_array, 48, NULL, 0, &overlapped, completion_routine);
Run Code Online (Sandbox Code Playgroud)

基本上它是否意味着调用带有48个缓冲区的WSARecv()将发布48个读取请求?

3-如果不是,一组WSABUF的目的是什么?我的意思是,只有一个正确的尺寸就足够了吗?

非常感谢!

c c++ sockets asynchronous winsock2

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

新建/删除运算符重载和基类

我现在很头疼。

基本上我有这个:

Class A -> Class B
Class A -> Class C
Class A -> Class D

Class E with constructor with declaration E(int, A *objptr, bool IsObjPtrOwner = true)
Run Code Online (Sandbox Code Playgroud)

如您所见,BC 和 D 继承自 A,A 是基类。D 类必须具有特定的对齐方式(因为其中使用了 SSE2),因此我在其中重载了 new/delete,每次动态分配对象时都提供对齐的内存块。我还应该提一下,因为 ABC 和 D 不同,我几乎猜想 BCA 和 D 根本没有相同的大小。

所以我希望能够做到这一点:

E eobj(12, new D(2.001), true);
Run Code Online (Sandbox Code Playgroud)

因为参数 IsObjPtrOwner 为真,我对类 E 进行了编程,这样,如果成员 m_IsObjPtrOwner 为真,则在 E 的析构函数中删除指针 m_objptr。

这样我就可以很方便的在构造对象E的同时直接动态分配A的派生类之一,以后不用管了。这样做的原因是我将在整个程序中创建大量 E 类实例,每次使用不同的 B/C/D 实例。所以我不希望每次构造 E 的实例时都必须保留我创建的每个指针的副本。

所以我试图使新/删除操作符纯虚拟,但它不起作用。该死的函数必须是静态的,非常烦人。所以我试图尽可能地规避这一点,但我最终发现我不能在静态函数中使用“this”。

我能做什么?我怎样才能实现这个梦想?我有一个梦想...


编辑:出于某些原因,人们根本不明白我想说什么。

我有一个基类 A 和一组来自 A 的派生类 B/C/D。我有一个类 E,在其构造函数中将类 …

c++ oop operator-overloading new-operator delete-operator

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

从C++ 11中的另一个线程解锁一个线程

我对C++ 11的thread.h api的了解并不是很广泛(实际上我也不熟悉线程编程,但我最近读了很多,并且知道并发和类似的东西但是我开始使用它,我面临的问题是我还没有遇到过的问题.

我有两个线程函数,比如这些

std::thread(thread1, args); // Spawn thread 1
std::thread(thread2, args); // Spawn thread 2

[...]

int thread1(bunch of args)
{
     lock_thread_2();
     [do stuff]
     while (some condition) {
         [do stuff]
         unlock_thread_2();
     }
}

int thread2(bunch of args)
{
     while (some condition) {
         [do stuff]
         wait_for_thread1_to_unlock_me();
     }
}
Run Code Online (Sandbox Code Playgroud)

我首先考虑使用std :: mutex来做它,但我读到它可能很危险,因为如果我解锁已经解锁的互斥锁并且在它之上它的行为是不确定的,它将无法正常工作,因为mutex.lock()不会不一定会暂停执行(只有当互斥锁已被锁定时才这样做)所以编写它是非常可怕的,我必须将unlock()和lock()调用结合在一起.

这里要注意的重要一点是thread2的执行只受thread1控制,但是thread2永远不会以任何方式锁定thread1.只有thread2被thread1锁定,只有thread1控制执行流程thread2,否则不会.

你会如何以一种干净的方式,支持的方式做到这一点?你愿意举一个代码的例子吗?

谢谢!

c++ concurrency multithreading mutex c++11

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

使用带自定义rng的std :: shuffle?

我看到std :: shuffle采用URNG参数.我正在使用自定义版本的生成器(WELL512a),并希望将它与std :: shuffle一起使用.

我的问题是:是否可以将它与std :: shuffle一起使用?例如,可能使用URNG作为基类?

谢谢!

c++ shuffle std prng c++11

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