簡體   English   中英

C ++如何將數組int [10] push_back到std :: vector <int[10]> ?

[英]C++ how to push_back an array int[10] to std::vector<int[10]>?

#include <vector>
using namespace std;

vector<int[60]> v;
int s[60];
v.push_back(s);

Visual Studio 2015社區中的此代碼報告編譯錯誤:

錯誤(活動)沒有重載函數的實例“std :: vector <_Ty,_Alloc> :: push_back [with _Ty = int [60],_ Alloc = std :: allocator]”匹配參數列表

錯誤C2664'void std :: vector> :: push_back(const int(&)[60])':無法將參數1從'int'轉換為'int(&&)[60]'

改為使用std::array

#include <vector>
#include <array>

using namespace std;

int main()
{
    vector<array<int, 10>> v;
    array<int, 10> s;
    v.push_back(s);
    return 0;
}

但我還要質疑包含數組的向量的目的。 無論是什么原因,都可能有更好的方法來實現相同的目標。

你可以這樣做:

#include <iostream>
#include <vector>

int main()
{
    int t[10] = {1,2,3,4,5,6,7,8,9,10};

    std::vector<int*> v;

    v.push_back(t);

    std::cout << v[0][4] << std::endl;

   return 0;
}

更具體地說,在這個解決方案中,你實際上並沒有將數組t的值存儲到向量v中,只是存儲指向數組的指針(並且更具體地說是數組的第一個元素)

我不確定你是說從數組初始化一個向量,如果是,這是一種使用vector的構造函數的方法:

int s[] = {1,2,3,4};
vector<int> v (s,  s + sizeof(s)/sizeof(s[0]));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM