小编Kyl*_*yle的帖子

在普通键的情况下使用map over unordered_map有什么好处吗?

最近unordered_map在C++中的讨论使我意识到,我应该使用之前使用unordered_map过的大多数情况map,因为查找的效率(摊销的O(1)O(log n)).大多数时候我使用的地图我使用intstd::string作为键,因此我对哈希函数的定义没有任何问题.我越是想到它,我就越发现我发现std::map在一个简单类型的情况下我找不到任何理由std::unordered_map- 我看了一下界面,并没有发现任何显着的差异会影响我的代码.

因此,这个问题-有没有使用任何真正的原因std::mapstd::unordered map简单类型一样的情况下,intstd::string

我从一个严格的编程角度问我 - 我知道它没有被完全认为是标准的,并且它可能会带来移植问题.

另外我希望正确的答案之一可能是"它对于较小的数据集更有效",因为开销较小(是真的吗?) - 因此我想将问题限制在密钥数量的情况下是非平凡的(> 1 024).

编辑: 呃,我忘记了显而易见的(感谢GMan!) - 是的,地图是当然有序的 - 我知道,我正在寻找其他原因.

c++ performance dictionary unordered-map

346
推荐指数
12
解决办法
18万
查看次数

Android IntentService无法实例化类; 没有空的构造函数

我有一个MainActivity类需要访问在线API(因此使用网络资源).这需要我在单独的文件中创建的后台线程HttpRequestService.java.

MainActivity.java:

public class MainActivity extends Activity {
    public static final String API_KEY = "KEYKEYKEYKEYKEY";
    public static final String CLIENT_ID = "IDIDIDIDIDIDID";
    private final String BROADCAST_ACTION = "com.example.BROADCAST";
    private final String EXTENDED_DATA_STATUS = "com.example.STATUS";
    static final String LOGCAT_TAG = "TAGTAGTAGTAGTAG";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();

        String token = "TOKENTOKENTOKENTOKEN";
        String urlString = "https://www.example.com/api?key=" + API_KEY;

        // Create and start intent for HttpRequestService background thread.
        Intent httpRequestServiceIntent …
Run Code Online (Sandbox Code Playgroud)

android intentfilter broadcastreceiver android-intentservice

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

uint64_t键的最佳哈希函数是0到最大值的范围是多少?

假设我们有一组元素并希望将它们存储在哈希映射中(例如std::unordered_set),并且每个元素都有一个类型的键,uint64_t其值可以从0到其最大可能值变化,是否是使用琐碎的最佳选择哈希函数,其中键的哈希值本身就是键?它是否依赖于正在使用的容器(即Google的稀疏哈希与来自STL的无序地图)?出现关键值的概率未知.

c++ algorithm hash hashtable

8
推荐指数
2
解决办法
5349
查看次数

一个返回多个函数的装饰器

我想编写一个装饰器,将多个函数放入模块命名空间。考虑以下模块:

# my_module.py


from scipy import signal


@desired_decorator(new_size=(8, 16, 32))
def resample(x, new_size):
    return signal.resample(x, new_size)
Run Code Online (Sandbox Code Playgroud)

我想现在可以进口resample_8resample_16以及resample_32my_module。我可以编写装饰器并让它返回一个函数列表,但是如何使这些函数在模块命名空间中可用?

python python-decorators

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

如何比较字符串的一部分而不进行复制?

我要遍历一个长字符串,并且在每次迭代时,我都会将字符串的一部分与常量进行比较,并存储字符串的某些部分。在我的实际代码中,此代码运行数百万次,并且是主要瓶颈。我认为这是由于过度使用造成的std::string::substr

#include <iostream>
#include <map>
#include <string>
#include <vector>

int main() {
    std::string str("0=My,1=comma,2=separated,3=string,0=with,3=repeated,7=IDs");
    std::vector<std::string> out0;
    std::map<std::string, std::string> out;

    size_t pos = str.find(',');

    // loop over the string, collecting "key=value" pairs
    while (pos < str.size() - 1) {
        if (str.substr(pos + 1, 2) == "0=") {
            auto newPos = str.find(',', pos + 3);
            out0.push_back(str.substr(pos + 3, newPos - pos - 3);
            pos = newPos;
        } else {
            size_t eqPos = str.find('=', pos + 1);
            auto newPos = str.find(',', …
Run Code Online (Sandbox Code Playgroud)

c++ string c++11

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

http.FileServer 只提供 index.html

我的简单文件服务器代码:

package main

import (
    "net/http"
    "os"

    "github.com/gorilla/handlers"
    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()

    // default file handler
    r.Handle("/", http.FileServer(http.Dir("web")))

    // run on port 8080
    if err := http.ListenAndServe(":8080", handlers.LoggingHandler(os.Stdout, r)); err != nil {
        panic(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

我的目录结构是:

cmd/server/main.go
web/index.html
web/favicon.ico
web/favicon.png
web/css/main.css
Run Code Online (Sandbox Code Playgroud)

index.html要求main.css. 所以当我运行时,go run cmd/server/main.go我得到以下输出:

127.0.0.1 - - [24/Dec/2019:22:45:26 -0X00] "GET / HTTP/1.1" 304 0
127.0.0.1 - - [24/Dec/2019:22:45:26 -0X00] "GET /css/main.css HTTP/1.1" 404 19
Run Code Online (Sandbox Code Playgroud)

我可以看到index.html页面,但没有 CSS。当我请求任何其他文件(例如favicon.ico …

http go mux

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