小编Pos*_*elf的帖子

round()for C++中的float

我需要一个简单的浮点舍入函数,因此:

double round(double);

round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)

我能找到ceil()floor()在math.h中-但不是round().

它是以另一个名称存在于标准C++库中,还是缺少?

c++ floating-point rounding

227
推荐指数
11
解决办法
36万
查看次数

如何在android上以编程方式将音量调到最大?

我正在为Android编写一个应用程序来调高音量并播放45秒的歌曲然后停止.这很好,但是我只能将音量提高到50%,有没有办法使用setVolume()将音量调高到100%?

这是我的代码:

final MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);

//plays eye of the tiger for 45 seconds
if (messages.contains("MUSIC ONLY")){

    //turn up the volume
    mp.setVolume(20, 20);
    mp.start();

    //play ring tone for 45 seconds
    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            mp.stop();
        }
    }, 45000);
}
Run Code Online (Sandbox Code Playgroud)

android volume android-music-player

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

如何在模板化转换运算符中消除歧义?

在混淆之后为什么我的代码在GCC上给了我一个模糊错误但在Clang上没有错误,我简化了代码.它可以在下面看到.

struct Foo
{
    // Foo(Foo&&) = delete;
    // Foo(const Foo&) = delete;
    Foo(int*) {}
};

struct Bar
{    
    template<typename T>
    operator T()
    {
        return Foo{nullptr};
    }
};

int main() { Foo f{Bar{}}; }
Run Code Online (Sandbox Code Playgroud)

错误如下.

main.cpp:17:18: error: call to constructor of 'Foo' is ambiguous
int main() { Foo f{Bar{}}; }
                 ^~~~~~~~
main.cpp:1:8: note: candidate is the implicit move constructor
struct Foo
       ^
main.cpp:1:8: note: candidate is the implicit copy constructor
main.cpp:5:1: note: candidate constructor
Foo(int*) {}
^
Run Code Online (Sandbox Code Playgroud)

这次我无法让它成功地为Clang编译,所以我想这只是一个Clang bug而且这是预期的行为.

当我明确删除副本并移动构造函数(即取消注释前两行代码)时,我得到了 …

c++ templates type-conversion ambiguous

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

如何仅显示 VS Code Diff 中已更改的部分或区域

IntelliJ IDE 有一个名为“折叠未更改的片段”的按钮,它隐藏了大多数保持不变的代码行,并以更少的空间容纳相关信息。VS Code中有类似的东西吗?如果是这样,如何启用它?

diff jetbrains-ide visual-studio-code

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

更喜欢通过隐式构造函数或隐式转换运算符将一种类型转换为另一种类型?

假设我们有程序void f(X2);。进一步假设我们有类型X1并且X2不共享继承层次结构。

我们想这样称呼它:f(X1{})X1隐式转换为X2. 我们有两种选择来实现这一目标:

struct X2 {};
struct X1 { operator X2(); };
Run Code Online (Sandbox Code Playgroud)
struct X1 {};
struct X2 { X2(const X1&); };
Run Code Online (Sandbox Code Playgroud)

在实现方面,两者之间在定义顺序和访问私有数据的方式方面存在实际差异。

但从用户的角度来看,这两种方法是否会表现出不同的情况?如果是这样,两者中哪一个更可取?

即使我们对两者都进行标记,这个问题仍然是一样的explicit。然后出现的一个区别是,通过构造函数的转换仅在前一种情况下可用,但static_cast适用于任何一种情况。

c++ constructor conversion-operator implicit-conversion implicit-constructor

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

我应该使用什么数据结构来建模数据库/表?

数据库通常看起来像这样

?Name|Age|..?
?????????????
?John?025?..?
?Carl?033?..?
?....?...?..?
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的意思是一个具有固定列大小和可变大小的未排序行的表,可以通过 id 寻址。

C++11(或更早版本)中是否有数据结构可以表示这样的数据?

我想到了几种欺骗这种结构的方法,但没有一种是完美的。

1.分开 std::vector

std::vector<std::string> name;
std::vector<unsigned int> age;

// Write
name.push_back("John");
age.push_back(25);

// Read
std::cout << "The first entry is (" << name[0] << " | " << age[0] << ")\n";
Run Code Online (Sandbox Code Playgroud)

然而,定义一个包含多列的表需要大量的标记,并且通过调用push_back每个列来写入它std::vector真的很乏味。

2.std::vectorstd::tuple

std::pair在这种情况下就足够了)

std::vector<std::tuple<std::string, unsigned int>> table;

// Write
table.push_back(std::make_tuple("John", 25));

// Read 1
std::string name;
unsigned int age;
std::tie(name, age) = table[0];
std::cout << "The first entry is (" …
Run Code Online (Sandbox Code Playgroud)

c++ data-structures c++11

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

尖括号中的非类型名称参数与圆括号中的非类型名称参数

// Called with doSomething<5>();
template<unsigned i_>
void doSomething()
{
    std::cout << i_ << '\n';
}

// Called with doSomething(5);
void doSomething(unsigned i_)
{
    std::cout << i_ << '\n';
}
Run Code Online (Sandbox Code Playgroud)

什么时候首选第一个选项?为什么它甚至可用?我知道它对于尖括号中的参数与对象本身(而不是特定的构造函数)相关的类很有用,但是它对函数有用吗?

c++ templates arguments c++11

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

如何在需要提及其他类的类中初始化变量,这些类需要循环声明?

在下面的例子中,struct Yfoward声明的前向声明是不够的.如果你注释掉X :: b,它编译得很好,因为Y有一个完整的结构声明可以使用,但X只有前向声明.

#include <functional>
#include <iostream>

struct Y;

struct X
{
    std::function<bool(Y&)> b{[] (auto& y_) { return y_.a; }};

    bool a{false};
};

struct Y
{
    std::function<bool(X&)> b{[] (auto& x_) { return x_.a; }};

    bool a{true};
};

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ideone

以下是我可以提出的解决方案:

#include <functional>
#include <iostream>

struct Y;

struct X
{
    X();
    std::function<bool(Y&)> b;

    bool a{false};
};

struct Y
{
    Y();
    std::function<bool(X&)> b{[] (auto& x_) { return x_.a; }};

    bool …
Run Code Online (Sandbox Code Playgroud)

c++ circular-dependency c++11

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

如何使用CSS"浮动"高于HTML中所有其他内容的div?

我想创建一个div,当用户使用JS悬停在特定对象上时弹出.我知道这一切.但我的问题是,div在文本中并且在弹出时使一切变得丑陋.我希望它漂浮在文本之上.这可能与CSS有关吗?如果没有,是否可以使用插件或脚本语言?

html javascript css

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

无方法抽象类?

class Base
{
    virtual void bePolymorphic() = 0; // Will never be used
};

class Derived : Base
{
    virtual void bePolymorphic() override {}; // I have to do this in every derived class
};
Run Code Online (Sandbox Code Playgroud)

Base如果没有任何成员函数,这是我最近用来制作抽象类的hack .

在Java中有一个abstract关键字.为什么C++中没有?还有另一种方法可以使类抽象化吗?

c++

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