【问题标题】:Converting an array of int, to a vector of int in c++在 C++ 中将 int 数组转换为 int 向量
【发布时间】:2016-11-29 13:30:00
【问题描述】:

我有一个类似这样的数组

int A[] = {1, 2, 3, 4, 5, 6, 7}
vector<int> vec;
int index = 0;
for(int i = 0; i < A.size(); i++) {
if(some condition) {
    index = i;
}
**vec(A + index, i);**
}

如何将数组转换为从特定索引开始的向量,如上?

【问题讨论】:

  • 你为什么不能只使用vec.push_back() 并以这种方式填充向量?如果要复制整个数组 int 向量:for(int i = 0; i &lt; 7; i++)vec.push_back(A[i]);

标签: c++ arrays vector


【解决方案1】:

您可以使用index,如下所示。

#include <iterator>

int A[] = {1, 2, 3, 4, 5, 6, 7};

int index = 0;
for(int i = 0; i < A.size(); i++) {
if( /* some condition */ ) {
    index = i;
    break;
}

}
std::vector<int> vec ( std::begin(A) + index, std::end(A) ) ;

【讨论】:

  • 炫耀 ;-)。不要忘记#includestd::begin 的标头。
  • @Bathsheba 不需要。它保证包含在向量中,并且 OP 应该已经包含它,因为它们使用的是向量。
【解决方案2】:

std::vector&lt;int&gt; vec(A + index, A + sizeof(A) / sizeof(A[0])); 是酷猫的做法。

【讨论】:

    【解决方案3】:

    正如我在互联网上看到的,您可以使用 insert 方法将元素添加到向量中,您可以获取数组的所有元素并使用 for 循环将它们添加到向量中,就像以下代码一样:

    int A[] = {1, 2, 3, 4, 5, 6, 7}
    vector<int> vec;
    int index = 0;
    for(int i = 0; i < A.size(); i++) {
    if(some condition) {
        vec.insert(vec.begin()+index,A[i]));
        index++;
    }
    **vec(A + index, i);**
    }
    

    查看这篇文章了解更多信息

    insert an element into a specific position of a vector

    【讨论】:

    • insert 用于在特定位置插入元素。当使用 push_back 从空向量开始时​​更有意义
    • A.size() 是什么?第一行缺少分号,错误号。 vec.insert() emplace_back() 或 push_back() 或者至少构造一个 size 的向量,**vec(A + index, i);** 是什么?
    • @George 我只是重用了作者的代码,这样他就可以看到我对他的代码做了什么不同。 vec(A + index, i); 应该是注释。
    • @BrankVictoria 我的主要原因是即使操作代码正确,您给出的答案也是不正确的。另外,回馈损坏的代码并不是回答问题的好方法。如果您编辑答案,我会关闭我的 dv。
    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2017-08-21
    • 2019-05-26
    • 2015-09-11
    相关资源
    最近更新 更多