小编hon*_*onk的帖子

如何在std :: map中使用struct作为键?

我有以下代码,但我在最后一行收到错误:

struct coord { 
    int x, y; 

    bool operator=(const coord &o) {
        return x == o.x && y == o.y;
    }

    bool operator<(const coord &o) {
        return x < o.x || (x == o.x && y < o.y);
    }
};

map<coord, int> m;
pair<coord, int> p((coord{0,0}),123);
m.insert(p); // ERROR here
Run Code Online (Sandbox Code Playgroud)

如何在地图中使用结构作为键?


我试图将代码更改为:

struct coord { 
    int x, y; 

    bool const operator==(const coord &o) {
        return x == o.x && y == o.y;
    }

    bool const operator<(const coord &o) {
        return …
Run Code Online (Sandbox Code Playgroud)

c++ stdmap c++11

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

测试正文中抛出代码为0xc0000005的SEH异常

我正在使用GoogleTest为以下课程编写测试,我收到了上述错误.

class Base
{
    // Other Functions;

    CSig objSig[50];
}
Run Code Online (Sandbox Code Playgroud)

Class CSig如下:

class CSig
{
    //... constructor, destructor(empty) and some functions
    CMod *objMod;
    CDemod *objDemod;
}

CSig :: CSig
{
    bIsInitialised = false;

    for (int i=0; i<MAX_NUM; i++)
    {
        PStrokePrev[i] = 0.0;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我丢弃时CSig objSig[50],测试运行正常.

我该怎么做才能解决这个问题?另外,我需要CSig objSig[50]在Base类中.

c++ tdd googletest visual-c++

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

std :: map部分匹配键

我有一个std :: map,我想使用子字符串搜索一个键.例如

#include <iostream>
#include <map>
#include <string>
using namespace std;

typedef std::map<std::string, std::string> TStrStrMap;
typedef std::pair<std::string, std::string> TStrStrPair;

int main(int argc, char *argv[])
{
    TStrStrMap tMap;

    tMap.insert(TStrStrPair("John", "AA"));
    tMap.insert(TStrStrPair("Mary", "BBB"));
    tMap.insert(TStrStrPair("Mother", "A"));
    tMap.insert(TStrStrPair("Marlon", "C"));

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

我想搜索包含子串"Marl"而不是"Marlon"的位置.可能吗?怎么样?

编辑:没有加速库!

c++ search containers dictionary stdmap

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

使用自定义哈希函数插入unordered_set

我有以下代码来制作unordered_set<Interval>.编译好了.

struct Interval {
  unsigned int begin;
  unsigned int end;
  bool updated;   //true if concat.  initially false
  int patternIndex;  //pattern index. valid for single pattern
  int proteinIndex;   //protein index.  for retrieving the pattern
};

struct Hash {
  size_t operator()(const Interval &interval);
};

size_t Hash::operator()(const Interval &interval){
  string temp = to_string(interval.begin) + to_string(interval.end) + to_string(interval.proteinIndex);
  return hash<string>()(temp);
}

unordered_set<Interval, string, Hash> test;
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用此代码插入时,我无法编译:

for(list<Interval>::iterator i = concat.begin(); i != concat.end(); ++i){
  test.insert((*i));
}
Run Code Online (Sandbox Code Playgroud)

而且,我无法确定错误消息的问题,例如:

note: candidate is:
note: size_t …
Run Code Online (Sandbox Code Playgroud)

c++ unordered-set c++11

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

注释处理器似乎打破了Java泛型

背景

我试图使用Annotation Processors来生成特定Factory接口的实现.这些接口看起来如下:

public interface ViewFactory<T extends View> {

    <S extends Presenter<T>> T create(S presenter);

}
Run Code Online (Sandbox Code Playgroud)

public interface PresenterFactory<T extends View> {

    <S extends Presenter<T>> S create();

}
Run Code Online (Sandbox Code Playgroud)

Annotation Processor正在执行正确的操作,并为每个匹配的类生成一个工厂,该工厂使用相应的注释进行注释.

问题

注释处理器的输出如下:

public final class TestViewImplFactory implements ViewFactory {

    public final TestView create(TestPresenter presenter) {
        return new TestViewImpl(presenter);
    }
}
Run Code Online (Sandbox Code Playgroud)

和相应的其他类:

public final class TestPresenterImplFactory implements PresenterFactory {

    public final TestPresenter create() {
        return new TestPresenterImpl();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,TestViewImplFactory无法编译.错误消息是:

"类'TestViewImplFactory'必须声明为abstract或在'ViewFactory'中实现抽象方法create(S)"

Java说,以下是正确的:

@Override
public View create(Presenter presenter) {
    return new …
Run Code Online (Sandbox Code Playgroud)

java generics annotations annotation-processing

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

在Map中查找最小值

我有一张地图,我想在地图中找到最小值(右侧).现在我就是这样做的

bool compare(std::pair<std::string ,int> i, pair<std::string, int> j) {
  return i.second < j.second;
}
////////////////////////////////////////////////////
std::map<std::string, int> mymap;

mymap["key1"] = 50;
mymap["key2"] = 20;
mymap["key3"] = 100;

std::pair<char, int> min = *min_element(mymap.begin(), mymap.end(), compare); 
std::cout << "min " << min.second<< " " << std::endl;
Run Code Online (Sandbox Code Playgroud)

这工作正常,我能够得到问题的最小值当我把这个代码放在我的班级里它似乎不起作用

int MyClass::getMin(std::map<std::string, int> mymap) {
  std::pair<std::string, int> min = *min_element(mymap.begin(), mymap.end(), 
                                                 (*this).compare);
                                                 // Error probably due to "this".
  return min.second; 
}

bool MyClass::compare(
    std::pair<std::string, int> i, std::pair<std::string, int> j) { 
  return i.second < j.second; 
} …
Run Code Online (Sandbox Code Playgroud)

c++ dictionary stl stdmap minimum

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

如何标记并转到hg中的标签

该网站hg tag 1.0是将我的Mercurial存储库添加到标记名称.

如何将存储库切换到该标记名称?

$ hg tag myTag1.0
$ <edit more files>
$ hg commit -m "a message"
$ hg how to go back to that tag?
Run Code Online (Sandbox Code Playgroud)

如果我hg commit在这里做一个新的,会发生什么?它会去分支myTag1.0吗?或者它会保留在默认分支上?

mercurial

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

Django-Celery进度条

我用:

  1. 芹菜
  2. Django的芹菜
  3. 的RabbitMQ

我可以在Django管理页面中看到我的所有任务,但目前它只有几个状态,例如:

  • RECEIVED
  • 重试
  • 撤销的
  • 成功
  • 已启动
  • 失败
  • PENDING

这对我来说还不够.是否可以向管理页面添加有关正在运行的进程的更多详细信息?像进度条完成的工作柜台

我知道如何使用Celery日志记录功能,但出于某些原因,GUI在我的情况下更好.

那么,是否可以将一些跟踪信息发送到Django-Celery管理页面?

django django-celery

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

如何从Selenium浏览器加载会话和cookie到Python中的请求库?

如何从Selenium浏览器加载会话和cookie?以下代码:

import requests

cookies = [{u'domain': u'academics.vit.ac.in',
            u'name': u'ASPSESSIONIDAEQDTQRB',
            u'value': u'ADGIJGJDDGLFIIOCEZJHJCGC',
            u'expiry': None, u'path': u'/',
            u'secure': True}]
response = requests.get(url2, cookies=cookies)
Run Code Online (Sandbox Code Playgroud)

给了我以下例外:

Traceback (most recent call last):
  File "F:\PYTHON\python_scripts\cookies\cookies3.py", line 23, in <module>
    response = requests.get(url2, cookies=cookies)
  File "C:\Python27\lib\site-packages\requests\api.py", line 68, in get
    return request('get', url, **kwargs)<br/>
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 450, in request
    prep = self.prepare_request(req)
    cookies = cookiejar_from_dict(cookies)
  File "C:\Python27\lib\site-packages\requests\cookies.py", line 439, in cookiejar_from_dict
    cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
TypeError: list indices must be integers, not dict
Run Code Online (Sandbox Code Playgroud)

python python-requests selenium-webdriver

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

最新的FILETIME

我正在创建一个模拟对象来测试我的应用程序,以便它在边界条件下工作.我FILETIME在Windows SDK中使用.

该链接显示这是1601年1月1日(我假设午夜00:00:00两者的最早时间dwLowDateTimedwHighDateTime0x00000000),所以我有.什么是最新的FILETIME?

我的第一直觉是设置dwLowDateTimedwHighDateTime0xFFFFFFFF,后来我质疑,如果这确实是一个有效的时间,我需要测试,因为在我的链接页面说,SetFileTime函数使用0xFFFFFFFF指定文件的以前的读取时间应予以保留.

c++ windows utc filetime

16
推荐指数
2
解决办法
6225
查看次数