[英]C++ vector / list outputting strange values (and/or not storing values properly)
每当我尝试在我的代码中使用向量/列表时,它编译得非常好......
...但是,由于某些奇怪的原因,当我尝试删除一个元素时,它会出现段错误,并且每当我尝试 output 一个元素时,我都会得到一些奇怪的垃圾。
示例代码:
#include <iostream>
#include <vector>
int main() {
std::vector<char> sit;
sit.push_back('a');
sit.push_back('b');
sit.push_back('c');
for (int i = 0; i < sit.size(); i++)
std::cout << sit[i] << " ";
std::cout << "\n";
}
和 output:
:_M_realloc_insert_M_realloc_insertM_realloc_insert
output 应该是:
a b c
如果我尝试在push_back
之前预先保留( sit.reserve(3)
)
:reservereserveeserve
当我使用std::list
时也会发生这种情况。
真的很困惑这里发生了什么,所以任何帮助将不胜感激!
您错过了这一行#include<vector>
。 这就是它给出错误的原因。 它应该是这样的:
#include <iostream>
#include <vector>
int main()
{
std::vector<char> sit;
sit.push_back('a');
sit.push_back('b');
sit.push_back('c');
for (int i = 0; i < sit.size(); i++)
std::cout << sit[i] << " ";
std::cout << "\n";
}
您可能正在尝试这样做:
#include <iostream>
#include <string>
#include <vector>
int main()
{
std::vector<char> sit;
char val;
while (std::cin >> val)
{
if (val == '|')
{
break;
}
else
{
sit.push_back(val);
}
}
for (int i = 0; i < sit.size(); ++i)
{
std::cout << sit[i] << std::endl;
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.