繁体   English   中英

C++ 向量/列表输出奇怪的值(和/或未正确存储值)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM