Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找向量C+中最后定义的元素+; 我试图得到C++向量中最后定义的元素,但向量::容量和向量::大小只是给我最大的大小。例如: 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; }_C++_Vector - Fatal编程技术网

查找向量C+中最后定义的元素+; 我试图得到C++向量中最后定义的元素,但向量::容量和向量::大小只是给我最大的大小。例如: 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; }

查找向量C+中最后定义的元素+; 我试图得到C++向量中最后定义的元素,但向量::容量和向量::大小只是给我最大的大小。例如: 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; },c++,vector,C++,Vector,我尝试过使用vector::end()和类似的方法,但无法获取最后一个元素的索引 size()给出向量的长度(向量中实际包含的元素数量,而不是当前可以容纳的元素数量)。您看到的是相同的数字,因为您在向量上调用assign(array,array+MAX\u SIZE),这显然会用MAX\u SIZE元素填充向量。SIZE()给出向量的长度(向量中实际包含的元素数量,而不是当前可以容纳的元素数量)。您看到的是相同的数字,因为您在向量上调用assign(array,array+MAX\u SIZE)

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

size()
给出向量的长度(向量中实际包含的元素数量,而不是当前可以容纳的元素数量)。您看到的是相同的数字,因为您在向量上调用
assign(array,array+MAX\u SIZE)
,这显然会用
MAX\u SIZE
元素填充向量。

SIZE()
给出向量的长度(向量中实际包含的元素数量,而不是当前可以容纳的元素数量)。您看到的是相同的数字,因为您在向量上调用
assign(array,array+MAX\u SIZE)
,这显然会用
MAX\u SIZE
元素填充向量。

SIZE()
给出向量的长度(向量中实际包含的元素数量,而不是当前可以容纳的元素数量)。您看到的是相同的数字,因为您在向量上调用
assign(array,array+MAX\u SIZE)
,这显然会用
MAX\u SIZE
元素填充向量。

SIZE()
给出向量的长度(向量中实际包含的元素数量,而不是当前可以容纳的元素数量)。您看到的是相同的数字,因为您在向量上调用
assign(array,array+MAX\u SIZE)
,这显然会用
MAX\u SIZE
元素填充它。

当您调用
reserve(MAX\u SIZE)
时,您更改了容量,因此输出
100
就是它应该的样子。打印值的循环实际上迭代了100次,但所有剩余的字符都是
\0
,因此
std::cout
将这些指针解释为空字符串。这里是一个稍加修改的版本,它创建了一个正确的向量,因此
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;
}

当您调用
reserve(MAX_SIZE)
时,您会更改容量,因此输出
100
就是它应该的值。打印值的循环实际上迭代了100次,但所有剩余的字符都是
\0
,因此
std::cout
将这些指针解释为空字符串。这里是一个稍加修改的版本,它创建了一个正确的向量,因此
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;
}

当您调用
reserve(MAX_SIZE)
时,您会更改容量,因此输出
100
就是它应该的值。打印值的循环实际上迭代了100次,但所有剩余的字符都是
\0
,因此
std::cout
将这些指针解释为空字符串。这里是一个稍加修改的版本,它创建了一个正确的向量,因此
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;
}

当您调用
reserve(MAX_SIZE)
时,您会更改容量,因此输出
100
就是它应该的值。打印值的循环实际上迭代了100次,但所有剩余的字符都是
\0
,因此
std::cout
将这些指针解释为空字符串。这里是一个稍加修改的版本,它创建了一个正确的向量,因此
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;
}


代码执行它应该执行的操作。最后定义的元素是什么意思?您可以使用大小
MAX\u size
构造
cVector
。那你为什么不用std::string呢?我很抱歉。我最初使用动态数组并在那里定义填充,但后来改为普通数组。我现在就解决它。为什么实际大小应该是2?代码做它应该做的。最后定义的元素是什么意思?您可以使用大小
MAX\u size
构造
cVector
。那你为什么不用std::string呢?我很抱歉。我最初使用动态数组并在那里定义填充,但后来改为普通数组。我现在就解决它。为什么实际大小应该是2?代码做它应该做的。最后定义的元素是什么意思?您可以使用大小
MAX\u size
构造
cVector
。那你为什么不用std::string呢?我很抱歉。我最初使用动态数组并在那里定义填充,但后来改为普通数组。我现在就解决它。为什么实际大小应该是2?代码做它应该做的。最后定义的元素是什么意思?您可以使用大小
MAX\u size
构造
cVector
。那你为什么不用std::string呢?我很抱歉。我最初使用动态数组并在那里定义填充,但后来改为普通数组。现在我来修复它。为什么实际大小应该是2?有没有更好的方法将数组的内容添加到向量中?如果使用
字符串,整个代码只有5行。如果您坚持使用数组,请用char数组中“string”的长度替换
MAX\u SIZE
。是的,我想这是最好的情况。感谢您的帮助。有没有更好的方法将数组的内容添加到向量中?如果您使用
字符串,整个代码只有5行。如果您坚持使用数组,请用char数组中“string”的长度替换
MAX\u SIZE
。是的,我想这是最好的情况。感谢您的帮助。有没有更好的方法将数组的内容添加到向量中?如果您使用
字符串,整个代码只有5行。如果坚持使用数组,请将
MAX\u SIZE
替换为