首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅获取指定间隔的向量数据

仅获取指定间隔的向量数据
EN

Stack Overflow用户
提问于 2014-03-17 13:10:09
回答 3查看 75关注 0票数 0

我有一段代码,它只检索向量中的所有元素。我只想检索指定范围内的向量元素,该范围将被提供给函数。我已经尝试过递增迭代器,但是我无法检查我想要的向量元素的范围的末尾。代码:

代码语言:javascript
复制
void calculate(int start, int end)
{
  //Vector dupViewResults is already populated with another function
  //The definition of dupViewresults is vector<vector<string>> dupViewResults

  vector< vector<string> >::iterator row;
  for (row = dupViewResults.begin(); row != dupViewResults.end(); ++row)
  {
    std::advance(row, start); //Setting the iterator to the starting element.
    std::string filedata = readFileDataInStr(row->at(0));
    int x = boost::lexical_cast<int>( row->at(1) );
    long long int fileCRC32 = MurmurHash(filedata.c_str(), x, 0);
    std::string strCRC32 = std::to_string(fileCRC32);
    std::string query = "update duplicatesview set CRC32='" + strCRC32 + "' where Filepath='" + row->at(0) + "'";
    char* charQuery = &query[0];
    db.fireSQLQuery(charQuery, results);
  }
}

在上面的代码中,我不确定如何检查结束位置,然后中断。提前感谢您的帮助。

EN

回答 3

Stack Overflow用户

发布于 2014-03-17 13:18:05

代码语言:javascript
复制
int elementNumbers = dupViewResults.size();
vector< vector<string> >::iterator temp; 
if(end < elementNumbers)
     std::advance(temp, end);
else 
    temp = dupViewResults.end();

if(row > temp) //  check the end position and then brea
    break;
票数 0
EN

Stack Overflow用户

发布于 2014-03-17 13:48:22

好吧,我不知道这是不是一个好的实践,但是你可以从一个向量中检索元素,就像你从一个数组中提取元素一样,就像这样:

代码语言:javascript
复制
for(int k=0; k< 5; k++)
 cout << VectorName.at[k] << endl;
票数 0
EN

Stack Overflow用户

发布于 2014-03-17 14:19:25

为什么不用这个-

代码语言:javascript
复制
void calculate(int start, int end)
{
    for (int i = start ; i<end && i < dupViewResults.size(); i++)
    {
         //do your stuff with dupViewResults[i]
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22447384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档