小编Mar*_*k R的帖子

为什么创建新列表后 std::list::front 结果会改变?

在下面的代码中,为什么第二次list_front调用后会发生变化gen_listgen_list正在创建一个新列表,这如何更改以前的列表头?

#include <iostream>
#include <list>

std::list<int> gen_list()
{
    static int s_count = 0;
    std::list<int> result;
    for (int i = 0; i < 5; i++)
    {
        result.push_back(s_count++);
    }
    return result;
}

int main()
{
    const auto& list_front = gen_list().front();
    std::cout<<list_front<<"\n";
    gen_list();
    std::cout<<list_front<<"\n";
}
Run Code Online (Sandbox Code Playgroud)

结果:

0
9
Run Code Online (Sandbox Code Playgroud)

演示

c++

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

`glm::linearRand(-1.0f, 1.0f)` 给出的负数多于正数。这是为什么?“兰德”似乎没问题

我用来生成和glm::linearRand(-1.0f, 1.0f)之间的随机浮点数。然后,我输出正数(或以上)的百分比。-110.0f

std::srand(time(0)); // Give glm a new seed

uint32_t samples = 1000000000;
uint32_t positive = 0;
uint32_t negative = 0;

for (uint32_t i = 0; i < samples; i++) {
    float rand = glm::linearRand(-1.0f, 1.0f);

    if (rand >= 0.0f) {
        positive++;
    } else {
        negative++;
    }
}

std::cout << "positive %: " << std::setprecision(6) << ((float)positive / samples) * 100 << std::endl;
Run Code Online (Sandbox Code Playgroud)

49.6%无论我运行程序的频率如何(使用不同的种子!),正数的百分比总是以 左右结束。如果我正确理解浮点数,则-1.0f0.0f之间的数与0.0f和之间的数同样多1.0f

那么为什么这个程序生成的负数总是多于正数呢? …

c++ random glm-math

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

在地图上使用find <pair,int>

const_iterator如果您将地图定义为,如何使用find

pair

map<int, int>

const_iterator定义为键.

如果它只是const_iterator,我知道如何使用pair喜欢

map<int, int>

const_iterator

等等..

c++ dictionary

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

动态更改autolayout控制的视图的宽高比

问题

在UI中,我有一些视图,哪些内容是可伸缩的,但应该保留一些宽高比.此宽高比在运行时更改,并且在描述宽高比的某些属性更改时应更新视图布局.

我已曝光NSLayoutConstraint,但其用于宽高比的属性:multiplier是只读的.什么是更有趣的类似财产constant可以改变.

可能的解决方案

  1. 我可以使用固定宽度或高度的约束并根据预期比率计算它,但这需要额外的锅炉板代码,这将对几何/布局变化作出反应,我宁愿避免这种情况.
  2. 我可以实验intrisicContentSizesizeThatFits:,但我不知道如何应该使用NSLayoutConstraint

macos objective-c ios autolayout nslayoutconstraint

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

CMake Xcode 生成器 - 添加功能“强化运行时”

问题很简单。我有多平台项目(Windows/ Mac OS)。

现在,如果Mac OS我需要在我的包(它是 launchd 守护进程)的功能部分启用“强化运行时”。

我希望我的 Xcode 项目是由cmake(我不想维护多个项目文件)生成的。如果我可以通过修改构建过程(例如通过向xcodebuidl命令添加一些标志)来克服这个问题,那应该没问题,但我更喜欢在CMakeLists.txt文件中定义所有内容。

Xcode 项目功能视图

macos xcode cmake

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

以下 C++ 代码用于 -&gt;“#define idiv(a, b) (((a) + (b) / 2) / (b))”?

我正在处理经常使用一些重要优化的代码。是什么

#define idiv(a, b) (((a) + (b) / 2) / (b))
Run Code Online (Sandbox Code Playgroud)

用于?为什么不简单

#define idiv(a, b) ((a)/(b) + 0.5)
Run Code Online (Sandbox Code Playgroud)

是整数除法溢出保护还是其他什么?

c++ optimization

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

如何检测语音识别正在进行中

问题:

我与发送功能UITextField并排UIButton.当用户按下发送按钮时,我正在执行简单的操作:

- (IBAction)sendMessage: (id)sender {
   [self.chatService sendMessage: self.messageTextField.text];
   self.messageTextField.text = @""; // here I get exception
}
Run Code Online (Sandbox Code Playgroud)

现在,当用户从键盘开始使用听写时,然后按下听写视图(键盘)并立即按下发送按钮,我有异常"范围或索引越界".

可能的方法:

我注意到,当语音识别服务器处理数据时,其他应用程序会禁用此"发送"按钮.这恰好在两个事件之间:用户按下"完成",结果出现在文本字段中.我希望以同样的方式解决它.

我在文档中找到可以接收此通知的问题.我找到了UITextInput协议,但这不是我需要的.

类似主题:

我试过了什么:

  1. 简单地捕捉并忽略异常.崩溃没有确定,但虚拟键盘变得完全没有反应
  2. [UITextInputMode currentInputMode].primaryLanguage相等时禁用发送按钮@"dictation".通知UITextInputCurrentInputModeDidChangeNotification该报告的听写模式结束之前到达听写服务提交新的价值,我仍然能够点击发送按钮引起异常.当primaryLanguage 损失@"听写"值时,我可以增加延迟,但我不喜欢这种方法.最可能的是,这种所需的延迟取决于语音识别服务的响应程度.
  3. 我已经添加了一堆不同事件的操作(这evets一直在寻找处理:UIControlEventEditingDidBegin,UIControlEventEditingChanged,UIControlEventEditingDidEnd,UIControlEventEditingDidEndOnExit).好消息是它看起来像是UIControlEventEditingChanged在所需的时刻完全被解雇:当用户在听写视图上按"完成"并且当服务提交或结束听写时.所以这是我迄今为止最好的概念.该坏事是,这是在其他情况下被炒得并没有信息在这种情况下,这个控制事件被解雇区分开来,所以我不知道我应该禁用或启用按钮,或者什么都不做.

speech-to-text uitextfield ios

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

C++ std::locale("en") 在 iOS 上抛出异常

在 iOS 上,当我尝试从有效标识符构造 C++ 语言环境时,我的程序崩溃了:

由于未捕获的异常“collat​​e_byname::collat​​e_byname 未能为 en 构造”而终止应用程序,原因:“collat​​e_byname::collat​​e_byname 未能为 en 构造”

在这一行:

std::locale loc("en");
Run Code Online (Sandbox Code Playgroud)

这在其他平台上运行良好。这是平台上存在的有效区域设置标识符(我尝试使用来自 CFLocale 的标识符)。

例如,我的程序需要 C++std::locale来格式化日期和数字。

也许我需要在构建中包含其他库?

我正在使用最新的 XCode 9.4.1 及其包含的 libc++,它在 iOS 11.4.1 上运行。其他 C++ 功能在那里工作得很好。

不幸的是,没有办法用可移植的 C++ 列出可用的语言环境,尽管我尝试过的所有语言环境都列在 NSLocale.availableLocaleIdentifiers 中

c++ ios c++11

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

使用Cocoa获取所有可用网络接口(en0,en1,en2等)的列表?

在我的Cocoa应用程序中,我想向用户显示可用的网络接口列表,如Wireshark所做的:

Ø

获得这样一个列表的最佳方法是什么?Apple是否为此提供了框架,还是我必须使用标准库或其他库中的C API?

networking cocoa objective-c

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

如何在C++中停止线程执行

我在主程序中创建了一个线程,一旦主程序终止,线程执行就必须停止。我reader.join();用来终止线程执行。但它并没有停止执行。

我尝试使用下面提到的代码,我正在使用thread.join();函数,但它无法终止线程。在主程序之后,我的线程也继续执行。

#include <algorithm>
#include <array>
#include <atomic>
#include <mutex>
#include <queue>
#include <cstdint>
#include <thread>
#include <vector>

using namespace std;
using namespace std::chrono;

typedef pair<int, Mat> pairImage;

class PairComp {
public:
    bool operator()(const pairImage& n1, const pairImage& n2) const
    {
        if (n1.first == n2.first)
            return n1.first > n2.first;
        return n1.first > n2.first;
    }
};

int main(int argc, char* argv[])
{
    mutex mtxQueueInput;
    queue<pairImage> queueInput;
    int total = 0;
    atomic<bool> bReading(true);
    thread reader([&]() {
        int idxInputImage …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading mutex pthreads c++11

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