0

使用此代码,我收到错误消息 C26444: Avoid unnamed objects with custom construction and destroy (es.84)。我对此进行了搜索,但找不到适合我的案例的任何正确答案。提前致谢。

#include <iostream>
#include <vector>

vector<vector<int>> create2dVector(const size_t size1, const size_t size2, const int value) noexcept {
    vector<vector<int>> v(size1, vector<int> (size2));
    for (size_t i = 0; i < size1; i++) {
        for (size_t j = 0; j < size2; j++) {
            v[i][j] = value;
        }
    }
    return v;
}

int main() {
    create2dVector(2, 5, 10);
    return 0;
}
4

1 回答 1

0

尽管我建议您对容器使用迭代器,但这是您的代码没有错误。如果您使用 C++,请尝试使用 C++。

#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> create2dVector(const size_t , const size_t , const int );
vector<vector<int>> create2dVector(const size_t size1, const size_t size2, const int value)
{
    vector<vector<int> > v( size1 , vector<int> (size2));
    for (int i = 0; i < int(size1); i++) {
        for (int j = 0; j < int(size2); j++){
            v[i][j] = value;
        }
    }

    return v;
}
int main() {
    auto v = create2dVector(2, 5, 10);
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 5; j++){
            cout<< v[i][j]<< " ";
        }
        cout<< "\n";
    }

    return 0;
}

这就是我和推荐的方式。

#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> create2dVector(const size_t , const size_t , const int );
vector<vector<int>> create2dVector(const size_t size1, const size_t size2, const int value)
{
    vector<vector<int> > v( size1 , vector<int>(size2));
    for(auto i = v.begin() ; i != v.end() ;++i)
    {
        vector<int>p;
        for(int j=0;j<int(size2);++j)
        {
            p.push_back(value);
        }
        *i = p;
    }
    return v;
}
int main() {
    auto v = create2dVector(2, 5, 10);
    for(auto i : v)
    {
        for(auto j : i)
            cout<< j<<" ";
    }

    return 0;
}

于 2019-11-16T13:28:10.560 回答