【问题标题】:Iterating to vector after conversion from array从数组转换后迭代到向量
【发布时间】:2016-01-26 04:17:40
【问题描述】:
int arr[6] = {1, 4, 20, 3, 10, 5};

for (int i = 0; i < N; i++) {
    for (int j = i; j < N; j++) { 
       //some stuff...
    } 
}

//Above code is iterating twice to array.

将数组转换为向量后。我必须在向量中应用相同的逻辑。 请指导我如何迭代std::vector

【问题讨论】:

  • std::vectoroperator[]
  • 您尝试了什么矢量但不起作用?

标签: c++ vector iterator


【解决方案1】:

这取决于你想如何对std::vector&lt;int&gt;的元素进行操作以及是否需要索引信息。例如,如果你想遍历 std::vector&lt;int&gt; v 并想改变元素,你可以使用

for( auto& val : v )
{
    val = 0;
}

如果你不改变元素,使用

for( const auto& val : v )
{
    std::cout << val << std::endl;
}

如果需要索引信息,使用索引运算符[]

std::size_t size = v.size();

for( std::size_t i = 0; i < size; ++i )
{
    v[i] = i;
}

现在,如果您(真的?)想使用 std::vector&lt;int&gt; 来存储您的数据,但需要在特定循环中快速运行,也许您应该更喜欢类似的东西

int* data = v.data();
std::size_t size = v.size();

for( std::size_t i = 0; i < size; ++i, ++data )
{
    *data = i;
}

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2012-01-31
    • 2012-05-09
    • 2011-02-16
    • 2019-03-30
    相关资源
    最近更新 更多