#include <vector>
#include <queue>
using namespace std;
int main()
{
vector<priority_queue<int>> vec;
vec.push_back({});//compiles
vec.push_back({1});//don't work
vec[0] = {};//compiles
vec[0] = {1};//don't work
return 0;
}
priority_queueには初期化子リストコンストラクタがありません。既に存在するオブジェクトに{}を割り当てるとはどういう意味ですか?
でも、まだ{}を割り当てることができます。
私は、デフォルトのコンストラクタを使用して空のpriority_queueを作成し、それを既に存在するpriority_queueオブジェクトに割り当てたことを意味すると思います。
しかし、このようなものではありませんか?
これはどういう意味ですか、それはなぜ機能しますか? priority_queue部分を省略しました。
vec[0] = {};//compiles
vec[0] =();//don't work
私のキューオブジェクトをいつでも再初期化できますか?
priority_queue<int> que{};
que = {};//compiles
que{};//don't work
ここではnullptrのようなものがありますか?
{}は、nullptrがすべての種類のポインタのための空のポインタのようなものすべてのための空のオブジェクトですか?
priority_queue<int>* p{};
p = nullptr;
p = {};// still works
旧C++は何かを初期化するためのさまざまな方法の多くを持っていました。そこで、新しい*ユニフォーム初期化*を追加しました。今ではすべての古い方法と別の新しい方法があります。 –
'priority_queue'のデフォルトのコンストラクタが'明示的に '起こるので、これは実際には不正です。おそらくスタンダードの欠陥でしょう。 –
新しい方法では、古い方法よりもコーナーケースがさらに多くなります。 –