小编wil*_*lem的帖子

使用迭代器构造 std::vector 时不需要保留吗?

因此,当我vector使用迭代器调用 a 的构造函数时,即:

template <class InputIterator> vector (InputIterator first, InputIterator last);
Run Code Online (Sandbox Code Playgroud)

在构造函数开始添加元素之前,我似乎无法确保在底层数组中保留足够的空间。这是否意味着在构造过程中可能会调整该数组的大小,或者我是否可以假设构造函数通过以某种方式查看迭代器和对象大小之间的“距离”来推断正确的大小?(不确定是否在所有情况下都可能?)

c++ vector language-lawyer

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

如何检测类型类型别名?

我可以使用以下模板检查来检测成员:

template <typename T, typename = void>
struct hasMember : std::false_type {};
template <typename T>
struct hasMember<T, decltype((void)T::member, void())> : std::true_type {};
Run Code Online (Sandbox Code Playgroud)

例如:

class Test{
public:
   int member;
   using sometype = size_t; 
}
Run Code Online (Sandbox Code Playgroud)

我可以做:

if constexpr(hasMember<Test>)
{
   //do something
}
Run Code Online (Sandbox Code Playgroud)

现在假设我需要一个constexpr if告诉我一个类是否有 using 定义的函数。即可以检测到某个类(例如test)具有某种类型的 using 定义。即类似的东西

if constexpr(hasSomeType<Test>)
{
     //do something
} 
Run Code Online (Sandbox Code Playgroud)

这在 c++17 中可能吗?如何?

c++ templates c++17

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

.net随机生成器是如何实现的?

我指的是.net/c#中的标准(?)随机生成器

Random random = new Random(seed);
random.next();
Run Code Online (Sandbox Code Playgroud)

我知道文献中有数十种或数百种方法,但我无法找出.net框架目前使用哪种方法?

提问的原因:如果我绘制了很多随机变量,我是否会返回相同的序列.我知道一些RNG有这种不良特性.

.net c#

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

加速System.Collection.Generic.Queue()可能吗?

我的模拟时间的50%用于以下代码:

    internal double simWithdrawalFast(double t)
    {
        simarrivals.Enqueue(t + Leadtime);
        return simarrivals.Dequeue();
    }
Run Code Online (Sandbox Code Playgroud)

simarrivals是一个System.Collection.Generic.Queue<double>.

如果我自己编写队列,它会更快吗?

编辑:注意队列中有两个开头,即当调用simwithdrawal时队列有大约200个元素.每次调用都会添加和删除元素.

c#

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

标签 统计

c# ×2

c++ ×2

.net ×1

c++17 ×1

language-lawyer ×1

templates ×1

vector ×1