小编wrh*_*all的帖子

是否存在std :: tie for std :: pair之类的东西?

例如,使用元组:

#include <tuple>        // std::tuple, std::make_tuple, std::tie

int num;
char letter;
std::tuple<int,char> num_letter;

num_letter = std::make_tuple(10, 'a');
std::tie(num, letter) = num_letter;  // unpack num_letter into num and letter
Run Code Online (Sandbox Code Playgroud)

有没有相当于对的东西?

// ...
num_letter = std::make_pair(10, 'a');
std::pair_tie(num, letter) = num_letter;
Run Code Online (Sandbox Code Playgroud)

c++ std c++11 std-pair

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

通过引用传递然后复制和传递值在功能上有所不同吗?

两者之间是否存在功能差异:

void foo(const Bar& bar) {
  Bar bar_copy(bar);
  // Do stuff with bar_copy
}
Run Code Online (Sandbox Code Playgroud)

void foo(Bar bar) {
  // Do stuff with bar
}
Run Code Online (Sandbox Code Playgroud)

c++ pass-by-reference pass-by-value

15
推荐指数
2
解决办法
1692
查看次数

在C中,为什么多个声明适用于全局变量而不适用于局部变量?

在下面的代码中,为什么多个声明(和一个定义)适用于全局变量x,而不适用ymain()函数内部的局部变量?它显示以下2个错误:

1)没有联系的'y'重新声明

2)之前的'y'声明就在这里

为什么它显示局部变量但不是全局变量的错误?不仅是我的书,而且本论坛的以下2个链接清楚地表明我们可以多次声明一个变量(尽管只定义一次).

link1 link2

并且请注意解释第一个错误"没有链接"的部分是什么,"没有连接的'y'的重新声明"是什么意思?什么联系和谁?将局部变量链接到哪里?

    #include<stdio.h>

    int x;
    int x;
    int x=303;

    int main(void)
    {

      int y;
      int y;
      int y=776;   //Works fine if above 2 declarations are removed!!

      printf("The value of x is %d,and of y is %d",x,y);

    }
Run Code Online (Sandbox Code Playgroud)

c

10
推荐指数
2
解决办法
9743
查看次数

std :: unique_ptr是RAII的应用吗?

这是一个准确的描述吗?是否有意义?

您是否确保在unique_ptr超出范围之前不会删除它指向的对象[即使您没有使用unique_ptr]?

c++ unique-ptr

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

强制Ruby不以标准格式/科学记数法/指数表示法输出浮点数

我有同样的问题,发现这里的蟒蛇,但红宝石.

我需要输出一个这样的小数:0.00001,而不是1e-5.

有关我的特定问题的更多信息,我正在使用输出到文件 f.write("My number: " + small_number.to_s + "\n")

对于我的问题,准确性并不是一个大问题,所以只需要做一个if语句来检查small_number <1e-5然后打印0是否正常,它看起来并不像它应该的那样优雅.

那么更普遍的方法是什么呢?

ruby

5
推荐指数
2
解决办法
2536
查看次数

如果我使用unique_ptr的原始指针然后使用reset,原始指针仍然保证有效吗?

我很确定这是有效的.

int foo = 51;
int* bar = &foo;
foo = 3;
Run Code Online (Sandbox Code Playgroud)

所以酒吧仍然有效,并且*bar == 3.

如果我们说,怎么样?

std::unique_ptr<int> foo(new int(51));  // should probably use make_unique
int* bar = foo.get();
foo.reset(new int(3));
Run Code Online (Sandbox Code Playgroud)

我有保证*bar == 3吗?或者我通过继续引用bar导致未定义的行为?

c++ unique-ptr

5
推荐指数
2
解决办法
953
查看次数

无限枚举者倒带

我有一个函数,以下列方式生成枚举器:

def create_example_enumerator(starting_value)
  current = starting_value
  e = Enumerator.new do |y|
    loop do
      current += 1
      y << current
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

目前的行为非常简单.

> e = create_example_enumerator(0)
#<Enumerator: details>
> e.next
1
> e.next
2
> e.rewind
#<Enumerator: details>
> e.next
3
Run Code Online (Sandbox Code Playgroud)

我想将e.rewind枚举器重置为它的起始值.有没有一种很好的方法可以在使用无限枚举器的同时做到这一点?

ruby enumerator

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

将unique_ptr添加为类的实例字段,而不是显式删除复制/赋值ctors

有一些宏可以防止类被复制,例如: 宏禁止类复制和赋值.谷歌-vs- Qt

仅仅通过在我班级中使用unique_ptr,我会获得相同的结果吗?如果是这样,有没有理由不这样做?例如

class Foo {
  private:
    std::unique_ptr<int> DISABLE_COPY;
};
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor unique-ptr c++11

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

功能本地静态是默认值还是值初始化?

我使用的常见模式是:

const string& GetConstString() {
  static const auto* my_string = new string("useful const string");
  return *my_string;
}
Run Code Online (Sandbox Code Playgroud)

[这不是泄漏!观看此视频] 这解决了许多终身问题.string可以用任何具有重要dtor的类型替换.

如果你的类型有默认的ctor和普通的dtor,你可以这样做

const MyType& GetConstMyType() {
  static MyType my_type;
  return my_type;
}
Run Code Online (Sandbox Code Playgroud)

我正在和一个有默认ctor和普通dtor的班级一起工作.我想知道这个类是默认值还是值初始化.事实证明,它对于类类型并不重要.所以这成了一个学术问题[例如,如果你有这个类的数组].

但它是默认值还是值初始化?

c++ static c++11

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