c++ - 在 Vector C++ 中查找最后定义的元素

标签 c++ vector

我正在尝试获取 C++ vector 中最后定义的元素,但 vector::capacity 和 vector::size 都只给出了最大大小。例如:

int main() {
     char* array = new char[MAX_SIZE]; //MAX_SIZE is a const int equaling 100
     std::cout << "Enter in a number: ";
     std::cin >> array;
     std::vector<char> cVector;
     cVector.reserve(MAX_SIZE); 
     cVector.assign(array, array + MAX_SIZE);
     for (std::vector<char>::const_iterator i = cVector.begin(); i != cVector.end(); ++i) 
     {
          std::cout << *i;
     }
     std::cout << std::endl;
     std::cout << "Size: " << cVector.size() << std::endl;
     std::cout << "Actual size: " << cVector.capacity() << std::endl;
}

示例输出:

Enter in a number: 55
55
Size: 100
Actual size: 100 [Should say 2]

我试过使用 vector::end() 和类似的方法,但我无法获得最后一个元素的索引。

最佳答案

当您调用 reserve(MAX_SIZE) 时,您更改了容量,因此输出 100 是应该的。打印出值的那个循环实际上迭代了 100 次,但所有剩余的字符都是 \0,因此 std::cout 将这些指针解释为空字符串。这是一个稍微修改过的版本,它创建了一个合适的 vector ,因此 vector.back() 将指向最后一个元素,而 vector.end() 将指向内存中的下一个位置.

int main() {
    std::string s;
    std::cout << "Enter in a number: ";
    std::cin >> s;
    std::vector<char> cVector;
    cVector.reserve(MAX_SIZE);
    cVector.assign(&s[0], &s[0]+s.size());
    for (std::vector<char>::const_iterator i = cVector.begin(); 
         i != cVector.end(); ++i)
    {
        std::cout << *i;
    }
    std::cout << std::endl;
    std::cout << "Size: " << cVector.size() << std::endl;
    std::cout << "Actual size: " << cVector.capacity() << std::endl;
}

更新:请注意,我使用 std::string 只是为了让它更像 C++。你可以继续使用 char[],只是你需要将原来的赋值替换为:

cVector.assign(array, array + strlen(array));

关于c++ - 在 Vector C++ 中查找最后定义的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651309/

相关文章:

c++ - 您如何找到程序中最不优化的部分?

c++ - Skia SkCanvas不能用SkBitmap构造

c++ - std::random_shuffle 产生相同的结果,即使 srand(time(0)) 被调用一次

c++ - 获取 std::vector<std::string>::iterator 的索引

c# - 以编程方式卸载掌上电脑程序

c++ - 图像稳定

c++ - 使用 ZMQ 和 protobuf 时收到 0 大小的消息

c++ - 如何合并两个包含 std::unique_ptr 的 vector ?

c++ - 两个不等大小的 vector 是否存在 std::mismatch?

c++ - 访问结构 vector