[解決済み] value_type'型のnullポインタへの参照バインディング
2022-02-07 20:15:08
質問
これはリートコード26です。ソートされた配列が与えられたとき、各要素が一度だけ現れるように重複をその場で取り除き、新しい長さを返せ。例題は以下の通り。
nums = [1,1,2]
この関数が返すべきものは
[1,2]
.
以下は私のコードです。他の重複をすべて削除し、1つだけ残しています。しかし、私はいつも次のようなエラーが発生します。
reference binding to null pointer of type 'value_type'
を送信してください。どなたか教えていただけると幸いです。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int i = 0;
while(i < nums.size() - 1) {
if (nums[i] == nums[i + 1]) {
nums.erase(nums.begin() + i);
}
else i++;
}
return nums.size();
}
};
解決方法は?
vector<T>::size()
の型の値を返します。
size_t
であり、符号なし型です。渡されたベクトルが空で、したがってベクトルの長さが0であるとします。
nums.size() - 1
は整数のアンダーフローを引き起こし、実際に比較することになります。
0
を非常に大きな正の数で表すことができます。これは真と評価され、ループが実行されます。
i
配列の境界を通過します。
これを修正するために
nums.size()
を
int
を先取りするか、サイズを整数変数に格納して、それと比較します。
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】構造体のベクター初期化について
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】'cout'は型名ではない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] 型名の後の括弧は、newで違いがあるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】変数やフィールドがvoid宣言されている