美文网首页
C++中vector的地址

C++中vector的地址

作者: 战斗力五只鹅 | 来源:发表于2018-09-01 18:32 被阅读0次

LeetCode题目832,给定一个二进制矩阵 A,先水平翻转图像,然后反转图像并返回结果

解法比较简单,但在解题过程中遇到一个vector相关的问题。当使用锯齿向量时,先添加子向量,再给子向量添加元素;和先给子向量添加元素,再添加子向量,得到的结果是不同的:


vector<vector<int>> result;
for (int i = 0; i < A.size(); i++)
{
    vector<int> r;
    // 若先添加r,再向r中添加元素,则得到的result是四个空vector
    // result.push_back(r); 
    for (int j = A[i].size() - 1; j >= 0; j--)
    {
        int num = A[i][j] == 0 ? 1 : 0;
        r.push_back(num);
    }
    // 若先向r中添加元素,再添加r,则是正确结果
    result.push_back(r);    

    // 并且这里的两个地址不相同。
    cout << &r << "\n";
    cout << &result[i] << "\n\n";
}
return result;

因为以前只用过数组,数组的地址即是数组第0个元素的地址,向量的话则是不了解。为解决这个疑问,测试数组(用来作对比)和向量的首地址:


int arrInt[] = {1, 2};
cout << &arrInt << "\n";
cout << &arrInt[0] << "\n\n";

vector<int> vecInt = { 1, 2 };
cout << &vecInt << "\n";
cout << &vecInt[0] << "\n\n";

输出结果.png
由此可见,数组和数组中第0个元素,地址相同;而向量和向量第0个元素,地址不同。

相关文章

  • C++中vector的地址

    LeetCode题目832,给定一个二进制矩阵 A,先水平翻转图像,然后反转图像并返回结果。 解法比较简单,但在解...

  • C++ STL 之 vectot(三)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器增加元素 vector 容器增加...

  • Value,Vector,Map

    Value:基本容纳了C++中的所有基本类型,个人觉得有点像auto。 Vector:和C++中的vector十分...

  • C++:vector erase删除符合条件的元素

    绪 C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。C+...

  • C++ STL 之 vectot(四)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器删除元素 使用 clear() ...

  • 标准模板库-vector

    标准模板库-vector 1. vector简介 vector为C++的STL中的模板数组容器。在使用时需要包含#...

  • C++ STL 之 vectot(二)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 迭代器使用 与 array 类似,v...

  • c++学习记录6(GeekBand)

    这周作业是和vector有关的,就找了找vector相关的内容。如下: vector是C++标准模板库中的部分内容...

  • c++中的vector

    说实话就在刚才(2019年8月1日11:01:29)我还用数组做了一道算法题,由于数组过大我在本地无法测试,(很容...

  • C++中的vector

    1.Cpp中的vector(可变长的动态数组) vector是顺序容器的一种。vector是可变长的动态数组,支持...

网友评论

      本文标题:C++中vector的地址

      本文链接:https://www.haomeiwen.com/subject/pppuwftx.html