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\u003eThe latest version of the RowReader class is 2.37.0-rc, with the current version being 2.36.0 and many previous versions available for review.\u003c/p\u003e\n"],["\u003cp\u003eThe RowReader class is used to enumerate rows in the response obtained from \u003ccode\u003eTable::ReadRows()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eRowReader is not thread-safe, and concurrent operations on the same instance by multiple threads are not supported.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003ebegin()\u003c/code\u003e function returns a single-pass input iterator for reading rows, and creating or incrementing multiple iterators on the same \u003ccode\u003eRowReader\u003c/code\u003e is unsupported.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eCancel()\u003c/code\u003e gracefully terminates a streaming read and invalidates iterators.\u003c/p\u003e\n"]]],[],null,["# Class RowReader (2.36.0)\n\nVersion 2.36.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.36.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.36.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.36.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.36.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`"]]