如何在 C++ 中初始化 const int 二维向量

发布于 2024-12-20 21:41:18 字数 146 浏览 1 评论 0原文

如何初始化 const int 二维向量:

Const int vector < vector < int > >  v ? 

v = {1 , 1 ; 1, 0}  ?

它不起作用。

How to initialize a const int 2-dimension vector:

Const int vector < vector < int > >  v ? 

v = {1 , 1 ; 1, 0}  ?

it does not work .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泪冰清 2024-12-27 21:41:18

您可以执行此操作(仅在 C++11 中):

const vector<vector<int>>  v{{1,2,3},{4,5,6}};

另请注意,您不需要编写 >> >。由于此问题已在 C++11 中修复,因此 >> 可以正常工作。它不会被解释为右移运算符(如 C++03 的情况)。

You can do this (only in C++11):

const vector<vector<int>>  v{{1,2,3},{4,5,6}};

Also note that you don't need to write > >. As this issue has been fixed in C++11, >> would work. It wouldn't be interpreted as right-shift operator (as was the case with C++03).

泛滥成性 2024-12-27 21:41:18

如果您的编译器支持 C++11 的初始化列表功能(这就是所谓的吗?),您可以执行以下操作:

const vector<vector<int>> v {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

请注意,您将无法将任何元素添加到第一个维度(但您可以添加元素)到第二个),例如,

v.push_back(vector<int> { 8, 9, 10 }); // BAD
v[0].push_back(4); // OK

如果您希望第二个维度不可修改,则可以执行

vector<const vector<int>> {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

“Then”

v.push_back(const vector<int> { 8, 9, 10 }); // OK
v[0].push_back(4); // BAD

,或者如果您希望元素本身为const,则可以执行

vector<vector<const int>> {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

“Then”

v.push_back(vector<const int> { 8, 9, 10 }); // OK
v[0].push_back(4); // OK
v[0][0] = 2; // BAD

,您可能想要修改它在运行时,所以最好删除总共const

If your compiler supports the initialisation-list feature (is that what it's called?) of C++11, you can do this:

const vector<vector<int>> v {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

Note that you won't be able to add any elements to the first dimension (but you can add elements to the second), e.g.

v.push_back(vector<int> { 8, 9, 10 }); // BAD
v[0].push_back(4); // OK

If you wanted the second dimension to be non-modifiable, you'd do

vector<const vector<int>> {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

Then

v.push_back(const vector<int> { 8, 9, 10 }); // OK
v[0].push_back(4); // BAD

OR if you want the elements themselves to be const, you would do

vector<vector<const int>> {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

Then

v.push_back(vector<const int> { 8, 9, 10 }); // OK
v[0].push_back(4); // OK
v[0][0] = 2; // BAD

You probably want to modify it at runtime, so it's probably good to remove the const altogether.

任性一次 2024-12-27 21:41:18
using namespace std;

int main(void){

    const vector< vector<int> > v(10, vector<int>(10,1));

    return 0;

}

将 10x10 数组初始化为 1

using namespace std;

int main(void){

    const vector< vector<int> > v(10, vector<int>(10,1));

    return 0;

}

Initialises a 10x10 array to 1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文