小编P45*_*ent的帖子

std::size_t 的大小有多一致

我正在编写一组充当接口的纯虚拟类。这个想法是,实现此类接口的代码可以使用不同的构建配置、编译器,甚至不同的 STL 实现来构建,以通过此类接口使用此类对象。

像和一样的普通旧数据uint32_t是标准化的。(不是因为标准没有说明它的大小。)doublefloatbool

属于哪个类别std::size_t?它纯粹是机器架构的功能吗?例如,在 32 位机器上,它可能sizeof(std::size_t)不是 4?

c++ size-t abi c++11

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

从重复的字符构造字符串

在Java中,我需要在编译时构造一个未知的n零字符串。n理想情况下我会使用

String s = new String('0', n);

但这样的构造函数不存在。CharSequence似乎也没有合适的构造函数。所以我很想使用 构建自己的循环StringBuilder

在我冒着被老板抛弃的风险这样做之前,有人可以建议一下:Java 中有这样做的标准方法吗?在 C++ 中,构造函数之一std::string允许这样做。

java string

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

数组的最小元素

我用Java编写了一个double[] foo.

是否有用于提取此数组中最小值的库函数?我知道我可以建立一个,但如果库函数可用,这不是一个好习惯.什么都没有java.util.Arrays.

(在C++中我们有std::min_element等等,甚至是C++ 11中的一个新函数,可以同时获得最小值和最大值!)

java arrays

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

无法匹配模板类中模板函数的函数声明

考虑

template<class Y> struct foo
{
    template <class ForwardIt>
    foo(ForwardIt first, ForwardIt last);
};
Run Code Online (Sandbox Code Playgroud)

为了实现构造函数,我写了

template<class Y, class ForwardIt> foo(ForwardIt first, ForwardIt last)
{
    // ToDo - code here
}
Run Code Online (Sandbox Code Playgroud)

但是这会产生编译错误,导致它无法将该定义与声明匹配.

我究竟做错了什么?我正在使用C++ 11编译器.

c++ c++11

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

如何禁止获取对象的地址

我正在玩一个小班Foo,正在考虑写作register Foo foo;.

我知道,为了register实际工作,你不能拿地址foo.

但是在编译时并没有强制执行.我有什么方法可以禁止服用&foo吗?

c++

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

对于小的编译时间常数,"整数太大"

我有这个:

switch (account){
    case 08120:
        // Savings deposit interest rate
        return null;                
    case 13100:
        // Receivables contractual interest
        return null;                
    case 16550:
       // Default management process accounts payable
       return null;                                
}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨整数08120太大了!

到底是怎么回事?

java integer

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

是否返回对类定义行为中的指针的引用?

考虑

#include <iostream>

struct Foo
{
    int* n;
    Foo(){n = new int{};}
    ~Foo(){delete n;}
    int& get()
    {
        int* m = n;
        return *m;
    } 
};

int main()
{
    Foo f;
    std::cout << f.get();
}
Run Code Online (Sandbox Code Playgroud)

这是管理指针的类的简化版本,并具有返回对取消引用的指针的引用的方法。

这是定义的行为吗?

c++

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

如何转发类模板的构造函数参数

考虑一种默认值Bar

struct Bar
{
};
Run Code Online (Sandbox Code Playgroud)

以及 a 的特定情况BarMyBar它有一个需要 : 的构造函数int

struct MyBar
{
    MyBar(int n){}
};
Run Code Online (Sandbox Code Playgroud)

然后我有一个使用以下内容的类Bar

template<class ThisBar = Bar> struct Foo : ThisBar
{
    Foo(double){}; // Construct the 'Foo' from a 'double'
};
Run Code Online (Sandbox Code Playgroud)

但一个障碍是,如果我想要一个,Foo<MyBar>我需要能够构建MyBar

Foo<MyBar> f(1.0, 1);
Run Code Online (Sandbox Code Playgroud)

其中int用来构造MyBar。我的问题是如何编写这个构造函数,以便下面的代码可以在 C++17 中编译?

int main()
{
    Foo<MyBar> f(1.0, 1);
}
Run Code Online (Sandbox Code Playgroud)

c++ templates c++17

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

将const unsigned char*分配给执行就地替换或省略的std :: string

我有一个const unsigned char* bar以null结尾的字符缓冲区.

我需要将其复制到一个std::string.目前我用

std::string foo;
foo.assign(bar);
Run Code Online (Sandbox Code Playgroud)

但由于各种原因(由于bar),值> 127的奇数字符出现在列表中.用32(空格)替换这些字符就足够了,完全省略它们是可取的.

有没有办法可以替代

  1. 我复制到字符串后.使用类似的东西std::replace(foo.begin(), foo.end(), /*something funky*/)

  2. 当我这样做时,使用某种谓词"后插入器" assign.

我更喜欢(2)行.在我深入研究一个for循环之前,有没有更像stl的方式我可以做到这一点?

c++

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

为什么我的for循环会在双打矢量上崩溃?

这个for循环总是立即崩溃:

for (auto i = v.size() - 1; i >=0; --i);
Run Code Online (Sandbox Code Playgroud)

显然,我在循环中有一整堆代码,而v是双精度矢量.我试图以相反的顺序迭代它们.

这里发生了什么?

c++

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

标签 统计

c++ ×7

java ×3

c++11 ×2

abi ×1

arrays ×1

c++17 ×1

integer ×1

size-t ×1

string ×1

templates ×1