小编Ver*_*gon的帖子

std :: promise在我的机器上坏了(使用g ++ - mp)吗?

这段代码有效,还是我的编译器坏了?

#include <future>
#include <iostream>

int main() {
   std::cout << "doing the test" << std::endl;
   std::promise<bool> mypromise;
   std::future<bool> myfuture = mypromise.get_future();
   mypromise.set_value(true);
   bool result = myfuture.get();
   std::cout << "success, result is " << result << std::endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

$ g++-mp-4.8 -std=c++11 test.cpp
$ ./a.out
doing the test
Segmentation fault: 11
$ 
Run Code Online (Sandbox Code Playgroud)

我正在使用g ++ - mp-4.8,这是来自macports的gcc 4.8.

我疯了吗?

c++ gcc future c++11

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

什么是文件描述符的"异常"?

当一个人调用select()询问哪些文件描述符有"异常"等待时,这是什么意思?

如何触发其中一个"例外"?

如果有人能给我一个很好的解释,那就太棒了.我一直在谷歌搜索,无法找到一件事.

c unix io file-descriptor multiplexing

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

获取联系人的群组?

我正在尝试将联系人的多对多映射到组.

例如,如果我有:

  • 用户1属于组701,702,704
  • 用户2,不属于任何组
  • 用户3属于组702

我希望得到一个看起来像这样的关系:

userID | groupID
1      | 701
1      | 702
1      | 704
3      | 702
Run Code Online (Sandbox Code Playgroud)

我试过这个:

Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, new String[] {
    ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID,
    ContactsContract.CommonDataKinds.GroupMembership.GROUP_SOURCE_ID
}, null, null, null);
Run Code Online (Sandbox Code Playgroud)

但这并不是很有效.GROUP_SOURCE_ID列返回不是任何组ID的奇怪数字.有时甚至会返回0或负数.

我可以通过浏览每个组来构建这个映射,然后查找该组中的所有联系人,但这会需要很多查询,而我正试图保持快速(显然,只是那些少量查询非常慢!) .

谁能告诉我如何在一个查询中获得这种联系人到组的映射?

谢谢!

android

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

C++ 11中的"type-switch"构造

一直以来,我发现自己做了这样的事情:

Animal *animal = ...
if (Cat *cat = dynamic_cast<Cat *>(animal)) {
    ...
}
else if (Dog *dog = dynamic_cast<Dog *>(animal)) {
    ...
}
else { assert(false); }
Run Code Online (Sandbox Code Playgroud)

一旦我看到C++ 11中的闭包,我想知道,这样的事情可能吗?

Animal *animal = ...
typecase(animal,
    [](Cat *cat) {
        ...
    },
    [](Dog *dog) {
        ...
    });
Run Code Online (Sandbox Code Playgroud)

实现类型规划本来应该很容易,但我一直遇到一个问题,它无法弄清楚函数的参数,所以它无法知道尝试使用dynamic_cast,因为很难推断出lambdas的参数.花了几天的时间搜索谷歌和SO,但终于想通了,所以我将在下面分享我的答案.

c++ polymorphism lambda functional-programming c++11

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

我们不能查询事务内部的集合吗?

查看https://firebase.google.com/docs/reference/js/firebase.firestore.Transaction,我看到了四种方法:删除,设置,获取,更新。

我打算构造一个可爱的小集合查询并将其传递给.get,但是我看到文档说.get“读取提供的DocumentReference引用的文档”

看来这意味着我们无法使用Transaction对象获取集合或查询集合。

可以使用查询的.get()方法而不是事务的.get()方法查询那些对象,但是如果集合从我下面改变了,事务将以不一致的状态结束,而无需重试。

看来我在这里撞墙。我的理解正确吗?我们不能以一致的方式访问事务内部的集合吗?

firebase google-cloud-firestore

9
推荐指数
2
解决办法
1595
查看次数

如何在IntelliJ中显示通知?

想出如何在屏幕右上方显示其中一条小通知气泡消息,请在下面回答.

java intellij-idea intellij-plugin

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

在哪里可以获取有关JavaScript函数的对象参数语法的信息?

如果我想调用这样的函数:

moo({ a: 4 });
Run Code Online (Sandbox Code Playgroud)

通常,我必须这样表达我的函数定义:

function moo(myArgObj) {
    print(myArgObj.a);
}
Run Code Online (Sandbox Code Playgroud)

但是,这种出色的语法在spidermonkey中对于定义函数完全有效:

function moo({ a, b, c }) { // valid syntax!
    print(a); // prints 4
}
Run Code Online (Sandbox Code Playgroud)

这是什么功能?

javascript syntax destructuring ecmascript-6

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

当互斥锁/解锁深埋在函数调用中时,我是否需要栅栏或屏障?

我最近了解到编译器会通过重新排列指令来优化代码,并且可以通过使用障碍来控制.

IIRC,锁定互斥锁是一个障碍,解锁互斥锁也会成为障碍,使关键部分内的代码不会出现.

所以pthread_mutex_lock和pthread_mutex_unlock必须隐含地是这些"障碍".如果我有这样的课程,包装我的互斥体怎么办?

class IMutex {
public:
    virtual void lock() = 0;
    virtual void unlock() = 0;
};
Run Code Online (Sandbox Code Playgroud)

在我看来,编译器不会知道我在lock()内调用pthread_mutex_lock(),而在unlock()内调用pthread_mutex_unlock(),因为它都是虚拟的.

这会导致错误吗?我是否需要以某种方式手动指定障碍?

c++ concurrency mutex critical-section

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

一个模板函数,可以接受任何类型的两个列表

我正在尝试并尝试创建一个接受两个列表的函数:一个浮点列表,一个整数列表.我的第一个方法是:

template<typename FloatIterator, typename IntIterator>
Thing *createThing(
   FloatIterator floatsBegin,
   FloatIterator floatsEnd,
   IntIterator intsBegin,
   IntIterator intsEnd
) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

这适用于各种容器,甚至是普通的指针.但是,我无法轻松传入std :: initializer_list.例如,我希望能够像这样调用函数:

Thing *thing = createThing({ 3.0, 4.0, 5.0 }, { 0, 1, 2, 2, 3, 0 });
Run Code Online (Sandbox Code Playgroud)

所以我在想,我会尝试这样的事情:

template<typename FloatContainer, typename IntContainer>
Thing *createThing(const FloatContainer &floats, const IntContainer &ints) {
    for (float f : floats) { ... }
    for (int i : ints) { ... }
}
Run Code Online (Sandbox Code Playgroud)

这适用于stl容器和initializer_lists,但它不再适用于简单的指针.我不能再这样做了:

int numFloats;
float *floats = readFloatsFromFile(&numFloats, "myfloats.txt");

int numInts;
int *ints …
Run Code Online (Sandbox Code Playgroud)

c++ initializer-list c++11

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

如果浏览器现在可以缩放,我们为什么要使用em而不是px?

我经常看到人们说使用'em'是一个更好的主意,因为当人们需要更改其默认字体大小时,它会更好用.

但我从来没有听说有人改变他们的字体大小.但是,我听说有人(并且完成了自己)放大和缩小.放大和缩小工作正常.

它们已经过时了吗?我能最终回到像素吗?或者人们仍然会更改默认字体大小?如果他们这样做,当人们改变字体大小时,像素是否仍会破裂?

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