小编Mdp*_*p11的帖子

带有 ConstraintLayout 的自定义 DialogFragment

我正在构建一个 DialogFragment 用于显示用户可以应用的一些过滤器。这是我要构建的自定义视图的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.constraint.Guideline
    android:id="@+id/guideline_vertical_centered"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5" />

<CheckBox
    android:id="@+id/checkbox_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="4dp"
    android:layout_marginStart="100dp"
    android:layout_marginTop="16dp"
    android:checked="true"
    app:layout_constraintEnd_toStartOf="@+id/search_by_title"
    app:layout_constraintHorizontal_chainStyle="spread_inside"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/search_by_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="4dp"
    android:layout_marginTop="22dp"
    android:text="Titolo"
    app:layout_constraintStart_toEndOf="@+id/checkbox_title"
    app:layout_constraintTop_toTopOf="parent" />

<CheckBox
    android:id="@+id/checkbox_author"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:checked="true"
    app:layout_constraintStart_toEndOf="@+id/guideline_vertical_centered"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="4dp"
    android:layout_marginTop="22dp"
    android:text="Autore"
    app:layout_constraintStart_toEndOf="@+id/checkbox_author"
    app:layout_constraintTop_toTopOf="parent" />

<CheckBox
    android:id="@+id/checkbox_publisher"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="100dp"
    android:checked="true"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline7" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="4dp"
    android:layout_marginTop="6dp"
    android:text="Editore"
    app:layout_constraintStart_toEndOf="@+id/checkbox_publisher"
    app:layout_constraintTop_toTopOf="@+id/guideline7" /> …
Run Code Online (Sandbox Code Playgroud)

android android-dialogfragment android-constraintlayout

7
推荐指数
1
解决办法
4852
查看次数

在 std::cin 上发送输入

我正在运行一个带有主线程和辅助线程的程序,并且在满足特定条件后,两者都应该退出。问题是辅助线程,在检查运行条件仍然有效后,使用 std::cin 等待用户输入,因此如果在调用 std::cin 后满足条件,则线程继续等待用户输入。代码是这样的:

MainThread()
{
    std::thread t1{DoOtherWork}
    ...
    while(condition)
    {
         DoWork();
    }

    t1.join();
}

DoOtherWork()
{
    while(condition)
    {
         char c;
         std::cin >> c;
         ProcessInput(c);
    }

    return;
}
Run Code Online (Sandbox Code Playgroud)

因此,当不再满足条件时,两者都应该退出,但程序会卡在等待用户输入。如果我只是输入任何随机字符并按回车键,程序就会正常退出。

我的问题是,在加入辅助线程之前,主线程是否有任何方法可以将一些输入发送到 std::cin,以便另一个线程将继续执行并退出而无需任何进一步的用户输入。提前致谢

c++ multithreading cin

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

uniform_real_distribution运算符()编译错误

我写了这段代码:

std::pair<std::weak_ptr<Node>, size_t> NodeSelector::rouletteWheel() const {
    const std::uniform_real_distribution<long double> urd;
    size_t i = 0;
    for(auto rnd = urd(shared_random_engine); rnd >= 0; ++i) {
        rnd -= getNormValue(i);
    }
    return std::make_pair(entries_[i - 1], i - 1);
}
Run Code Online (Sandbox Code Playgroud)

以这种方式初始化“ shared_random_engine”的地方(在单独的.h文件中)

std::minstd_rand shared_random_engine(static_cast<unsigned int>(42));
Run Code Online (Sandbox Code Playgroud)

只要我在Windows上编译它,一切都可以正常工作,但是当我尝试使用g ++ 7.3.0在Ubuntu 18.04.2上编译时,出现此错误:

montecarlo.cpp: In member function ‘std::pair<std::weak_ptr<MonteCarloNode>, long unsigned int> NodeSelector::rouletteWheel() const’:
montecarlo.cpp:728:41: error: no match for call to ‘(const std::uniform_real_distribution<long double>) (std::minstd_rand&)’
  for(auto rnd = urd(shared_random_engine); rnd >= 0; ++i) {
                                         ^
In file included from /usr/include/c++/7/random:49:0, …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu g++

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

了解 std::pmr::new_delete_resource

我最近开始研究分配器和 c++17 中引入的新 pmr。

查看 cppreference 上 std::pmr::new_delete_resouce 的定义,我读到以下内容:

返回一个指向使用全局运算符new和运算符delete来分配内存的memory_resource的指针。

这个“全球”让我有点困惑。这是什么意思?它只是指操作员的正常调用吗?

int* i = new int;
delete i;
Run Code Online (Sandbox Code Playgroud)

因此在堆上分配东西,还是指分配全局变量的静态内存?

在这两种情况下使用这种结构有何意义?

c++ c++17 c++pmr

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