Object returned by Table::ReadRows(), enumerates rows in the response.
Thread-safety
Two threads operating concurrently on the same instance of this class or the iterators obtained from it are not guaranteed to work.
Iterate over the results of ReadRows() using the STL idioms.
The returned iterator is a single-pass input iterator that reads rows from the RowReader when incremented. The first row may be read when the iterator is constructed.
Creating, and particularly incrementing, multiple iterators on the same RowReader is unsupported and can produce incorrect results.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThis webpage documents the \u003ccode\u003eRowReader\u003c/code\u003e class, which is used to enumerate rows returned in response to a \u003ccode\u003eTable::ReadRows()\u003c/code\u003e operation.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRowReader\u003c/code\u003e class is not thread-safe when multiple threads operate on the same instance or its iterators concurrently.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRowReader\u003c/code\u003e class offers \u003ccode\u003ebegin()\u003c/code\u003e and \u003ccode\u003eend()\u003c/code\u003e functions to support iteration over the results using STL idioms, with the \u003ccode\u003ebegin()\u003c/code\u003e iterator supporting single-pass reading and honoring retry and backoff policies.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eCancel()\u003c/code\u003e function can be used to gracefully terminate a streaming read, which will also invalidate any iterators.\u003c/p\u003e\n"],["\u003cp\u003eMultiple versions of the \u003ccode\u003eRowReader\u003c/code\u003e class documentation are available, spanning from version 2.11.0 up to the latest release candidate 2.37.0-rc.\u003c/p\u003e\n"]]],[],null,["# Class RowReader (2.33.0)\n\nVersion 2.33.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/bigtable/latest/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.41.0](/cpp/docs/reference/bigtable/2.41.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.40.0](/cpp/docs/reference/bigtable/2.40.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.39.0](/cpp/docs/reference/bigtable/2.39.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.38.0](/cpp/docs/reference/bigtable/2.38.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.37.0](/cpp/docs/reference/bigtable/2.37.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.36.0](/cpp/docs/reference/bigtable/2.36.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.35.0](/cpp/docs/reference/bigtable/2.35.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.34.0](/cpp/docs/reference/bigtable/2.34.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.33.0](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.32.0](/cpp/docs/reference/bigtable/2.32.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.31.0](/cpp/docs/reference/bigtable/2.31.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.30.0](/cpp/docs/reference/bigtable/2.30.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.29.0](/cpp/docs/reference/bigtable/2.29.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.28.0](/cpp/docs/reference/bigtable/2.28.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.27.0](/cpp/docs/reference/bigtable/2.27.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.26.0](/cpp/docs/reference/bigtable/2.26.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.25.1](/cpp/docs/reference/bigtable/2.25.1/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.24.0](/cpp/docs/reference/bigtable/2.24.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.23.0](/cpp/docs/reference/bigtable/2.23.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.22.1](/cpp/docs/reference/bigtable/2.22.1/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.21.0](/cpp/docs/reference/bigtable/2.21.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.20.0](/cpp/docs/reference/bigtable/2.20.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.19.0](/cpp/docs/reference/bigtable/2.19.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.18.0](/cpp/docs/reference/bigtable/2.18.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.17.0](/cpp/docs/reference/bigtable/2.17.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.16.0](/cpp/docs/reference/bigtable/2.16.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.15.1](/cpp/docs/reference/bigtable/2.15.1/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.14.0](/cpp/docs/reference/bigtable/2.14.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.13.0](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.12.0](/cpp/docs/reference/bigtable/2.12.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.11.0](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader) \nObject returned by [`Table::ReadRows()`](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1Table#classgoogle_1_1cloud_1_1bigtable_1_1Table_1a337d7204d6ca65ccf7824a53ead0dfdb), enumerates rows in the response. \n\n###### Thread-safety\n\nTwo threads operating concurrently on the same instance of this class or the iterators obtained from it are **not** guaranteed to work.\nIterate over the results of ReadRows() using the STL idioms.\n\nConstructors\n------------\n\n### RowReader()\n\nDefault constructs an empty [RowReader](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader).\n\n### RowReader(std::shared_ptr\\\u003c DataClient \\\u003e, std::string, RowSet, std::int64_t, Filter, std::unique_ptr\\\u003c RPCRetryPolicy \\\u003e, std::unique_ptr\\\u003c RPCBackoffPolicy \\\u003e, MetadataUpdatePolicy, std::unique_ptr\\\u003c internal::ReadRowsParserFactory \\\u003e)\n\n### RowReader(std::shared_ptr\\\u003c DataClient \\\u003e, std::string, std::string, RowSet, std::int64_t, Filter, std::unique_ptr\\\u003c RPCRetryPolicy \\\u003e, std::unique_ptr\\\u003c RPCBackoffPolicy \\\u003e, MetadataUpdatePolicy, std::unique_ptr\\\u003c internal::ReadRowsParserFactory \\\u003e)\n\n### RowReader(RowReader \\&\\&)\n\nFunctions\n---------\n\n### begin()\n\nInput iterator over rows in the response. \nThe returned iterator is a single-pass input iterator that reads rows from the [RowReader](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader) when incremented. The first row may be read when the iterator is constructed.\n\nCreating, and particularly incrementing, multiple iterators on the same [RowReader](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader) is unsupported and can produce incorrect results.\n\nRetry and backoff policies are honored.\n\n### end()\n\nEnd iterator over the rows in the response.\n\n### Cancel()\n\nGracefully terminate a streaming read. \nInvalidates iterators.\n\nType Aliases\n------------\n\n### iterator\n\n**Alias Of** : `StreamRange\u003c Row \u003e::iterator`"]]