小编jos*_*h42的帖子

从上面找到矢量中最接近的值的优雅方式

我需要一个函数,它接受一个向量(假定为已排序)和一个值,并返回[edit] 大于小于或等于该数字的最接近的数字,最好使用STL中的算法.我已经提出了使用std :: lower_bound()的解决方案,但它看起来像kludgy和丑陋:

struct ClosestCmp {
    bool operator()(const int & x, const int & y) { return x > y; }
};

// vec is assumed to be sorted
int closest(const std::vector<int> & vec, int value)
{
    std::vector<int>::const_reverse_iterator cri =
        std::lower_bound(vec.rbegin(), vec.rend(), value, ClosestCmp());
    if (cri != vec.rend()) {
        return *cri;
    }
    return -1;
}

// ...
vec.push_back(1);
vec.push_back(2);
vec.push_back(4);
vec.push_back(5);
std::cout << closest(vec, 2) << "\n"; // Should ouput "2"
std::cout << closest(vec, 3) << "\n"; // …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm stl

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

可以退出带有活动goroutine的程序吗?

请使用以下代码段:

func main() {
    ch := make(chan int)
    quit := make(chan int)
    go func() {
        for {
            ch <- querySomePeriodicThing()
        }
    }()

    // ...

loop:
    for {
        select {
        case <-ch: handlePeriodicThing()
        case <-quit: break loop
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

goroutine应该在执行期间运行.当select语句从退出通道接收到某些内容时,它会跳出循环并且程序结束,而不会尝试停止goroutine.

我的问题:这会产生一次或两次不明显的间歇性不良反应吗?我知道在其他语言中,线程应该在程序结束之前清理(即退出),但是会有所不同吗?假设querySomePeriodicThing()不会打开文件描述符或套接字或任何不好的东西.

go goroutine

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

Kotlin SAM 与私有内部 Java 接口的转换?

考虑以下 Java 类:

package javapkg;

public class JavaClass {
    private interface JavaInterface {
        void foo();
    }

    public void bar(JavaInterface ji) {
        ji.foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此类的内部接口进行 SAM 转换的 Kotlin 代码(请注意,KotlinClass位于不同的包中):

package kotlinpkg
import javapkg.JavaClass

class KotlinClass {
    fun f() {
        val jc = JavaClass()
        // Does not compile:
        // "Cannot access 'JavaInterface': it is private in 'JavaClass'"
        jc.bar(object : JavaClass.JavaInterface{
            override fun foo() { }
        })

        // Compiles and runs fine on Android Nougat, but throws
        // a NoClassDefFoundError …
Run Code Online (Sandbox Code Playgroud)

java kotlin kotlin-interop

5
推荐指数
0
解决办法
222
查看次数

标签 统计

algorithm ×1

c++ ×1

go ×1

goroutine ×1

java ×1

kotlin ×1

kotlin-interop ×1

stl ×1