Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] 4.7. Vectors (1.9) #168

Closed
wants to merge 1 commit into from

Conversation

tatsuya6502
Copy link
Member

No description provided.

@tatsuya6502 tatsuya6502 added this to the 1.9 milestone Jun 24, 2016
@tatsuya6502
Copy link
Member Author

2月に以下の段落が原文に追加されてますが、内容が不適切+多少間違いありに思えるので、本家に問い合わせます。

Vectors store their contents as contiguous arrays of T on the heap. This means that they must be able to know the size of T at compile time (that is, how many bytes are needed to store a T?). The size of some things can't be known at compile time. For these you'll have to store a pointer to that thing: thankfully, the Box type works perfectly for this.

この段落は、Docs: Vec's contents being contiguous could be a little more clear #31554 の対応として、PR #31666 で導入されました。

元々の issue は、API doc に Vec の heap 上のデータ表現が、"contiguous arrays" ではなくて、"list" と書かれていたため、algorithm's complexity を誤解しそうというものでした(インデックスによるアクセスが O(1) の所、linked-list の O(n) と誤解されないかというもの)

私が思う、上の段落の問題点は、次のようなものです。

  • algorithm's complexity について説明していない。一応、contiguous arrays と書いているが、それだけでは不十分。(一方で、API doc では説明されている:"Vectors have O(1) indexing, amortized O(1) push (to the end) and O(1) pop (from the end).")
  • なぜデータを heap に置く必要があるか説明しているようで説明してない。また、それについては別の複数の section で説明されているので、ここには必要ない。
  • T のサイズがコンパイル時に決まるのでと書かれており、それはたしかに決まるのだが、Vec 構造体(heap に置かれる情報)は T 型のフィールドを持たないので関係ない。
  • Box の話は Vec と関係ない。Box については別のセクションで説明されている。

基本、この段落は削除して、代わりにセクションの冒頭に algorithm's complexity の説明を追加する形で、本家に提案する予定です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant