<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.5.0.final/cppdoc/functions_func_q.html" />
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>&nbsp; Apache Ignite C++: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">&nbsp; Apache Ignite C++
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="navrow3" class="tabs2">
    <ul class="tablist">
      <li><a href="functions.html"><span>All</span></a></li>
      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
      <li><a href="functions_vars.html"><span>Variables</span></a></li>
      <li><a href="functions_rela.html"><span>Related&#160;Functions</span></a></li>
    </ul>
  </div>
  <div id="navrow4" class="tabs3">
    <ul class="tablist">
      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
      <li><a href="functions_func_b.html#index_b"><span>b</span></a></li>
      <li><a href="functions_func_c.html#index_c"><span>c</span></a></li>
      <li><a href="functions_func_g.html#index_g"><span>g</span></a></li>
      <li><a href="functions_func_h.html#index_h"><span>h</span></a></li>
      <li><a href="functions_func_i.html#index_i"><span>i</span></a></li>
      <li><a href="functions_func_l.html#index_l"><span>l</span></a></li>
      <li><a href="functions_func_o.html#index_o"><span>o</span></a></li>
      <li><a href="functions_func_p.html#index_p"><span>p</span></a></li>
      <li class="current"><a href="functions_func_q.html#index_q"><span>q</span></a></li>
      <li><a href="functions_func_r.html#index_r"><span>r</span></a></li>
      <li><a href="functions_func_s.html#index_s"><span>s</span></a></li>
      <li><a href="functions_func_t.html#index_t"><span>t</span></a></li>
      <li><a href="functions_func_w.html#index_w"><span>w</span></a></li>
      <li><a href="functions_func_~.html#index_~"><span>~</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="contents">
&#160;

<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
<li>Query()
: <a class="el" href="classignite_1_1cache_1_1Cache.html#a26119f98c463ef80945e26efc6e83a89">ignite::cache::Cache&lt; K, V &gt;</a>
</li>
<li>QueryArgument()
: <a class="el" href="classignite_1_1cache_1_1query_1_1QueryArgument.html#aedfe6343779533adf61cded8bb0dfd98">ignite::cache::query::QueryArgument&lt; T &gt;</a>
</li>
<li>QueryCursor()
: <a class="el" href="classignite_1_1cache_1_1query_1_1QueryCursor.html#a23f71bdcccc38d2d9f6eeeaa4d635714">ignite::cache::query::QueryCursor&lt; K, V &gt;</a>
</li>
<li>QueryFieldsCursor()
: <a class="el" href="classignite_1_1cache_1_1query_1_1QueryFieldsCursor.html#a468430a34c1e20b54b88f31856790652">ignite::cache::query::QueryFieldsCursor</a>
</li>
<li>QueryFieldsRow()
: <a class="el" href="classignite_1_1cache_1_1query_1_1QueryFieldsRow.html#acbc34e7a1d2adf4541256a0dd59a80d5">ignite::cache::query::QueryFieldsRow</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Dec 29 2015 13:22:07 for &nbsp; Apache Ignite C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
