GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::vector::data - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. vector
  3. vector
  4. data

最終更新日時: 2026年09月19日 21時31分51秒 (JST)
rotarymars が更新

履歴 編集

function
<vector>

std::vector::data

T* data();                      // (1) C++98
T* data() noexcept;             // (1) C++11
constexpr T* data() noexcept;   // (1) C++20

const T* data() const;                    // (2) C++98
const T* data() const noexcept;           // (2) C++11
constexpr const T* data() const noexcept; // (2) C++20

概要

配列の先頭へのポインタを返す。

vectorが空の場合であっても、この関数の呼び出し自体は問題なく行える。ただし、その戻り値については規定されていないため、間接参照を行うと未定義動作になる。

戻り値

[data(), data() + size()) が適正な範囲になるようなポインタ。

  • C++11 : 空ではないvectorに対してはdata() == &front()となる
  • C++17 : 空ではないvectorに対してはdata() == addressof(front())となる

計算量

定数時間

例

#include <iostream>
#include <vector>

int main()
{
  std::vector<int> v = {3, 1, 4};

  int* p = v.data();

  std::cout << *p << std::endl;

  ++p;
  std::cout << *p << std::endl;
}

出力

3
1

バージョン

言語

  • C++11

処理系

  • Clang: 9.0.1 ✅
  • GCC: ??
  • Visual C++: 2010 ✅, 2012 ✅, 2013 ✅

備考

gcc 4.8.2 の時点で libstdc++ の実装にはバグがあり、vector が空の場合に data() を呼び出すと未定義動作になる。(Bug 59829)。gcc 4.9.0で修正されている。

参照

  • LWG Issue 464. Suggestion for new member functions in standard containers
  • LWG Issue 1312. vector::data no longer returns a raw pointer
    • C++11で、戻り値の型がpointerからT*へ改められた。アロケータが独自のポインタ型を持つ場合でも、生ポインタが返ることを保証するため
  • [gcc] Revision 207241
  • P1004R2 Making std::vector constexpr
  • LWG Issue 2596. vector::data() should use addressof
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.