我想管理三个std :: vector并考虑这样的解决方案:
#include <stdlib.h>
#include <vector>
int main() {
std::vector<int> nums[3];
nums[0].push_back(1);
nums[0].push_back(3);
nums[0].push_back(5);
nums[1].push_back(10);
nums[1].push_back(20);
nums[1].push_back(30);
nums[2].push_back(100);
nums[2].push_back(300);
nums[2].push_back(500);
nums[2].push_back(700);
int i;
for (i = 0; i < nums[0].size(); i++) {
printf("%d\n", nums[0].at(i));
}
for (i = 0; i < nums[1].size(); i++) {
printf("%d\n", nums[2].at(i));
}
for (i = 0; i < nums[2].size(); i++) {
printf("%d\n", nums[2].at(i));
}
}
为什么这不起作用?我不了解编译器输出。知道如何解决这个问题吗?
GCC
架构x86_64的未定义符号:
&#34; std :: __ 1 :: __ vector_base_common :: __ throw_length_error()const&#34;, 引自: void std :: __ 1 :: vector&gt; :: __ push_back_slow_path(int const&amp;)in code-4a0a01.o&#34; std :: __ 1 :: __ vector_base_common :: __ throw_out_of_range()const&#34;, 引自: 代码-4a0a01.o&#34; std :: terminate()&#34;中的std :: __ 1 :: vector&gt; :: at(unsigned long),引自: ___clang_call_terminate代码-4a0a01.o&#34; operator delete(void *)&#34;,引自: 代码-4a0a01.o中的std :: __ 1 :: __ vector_base&gt; :: ~__vector_base() 代码-4a0a01.o中的std :: __ 1 :: __ split_buffer&amp;&gt; ::〜__split_buffer()
&#34; operator new(unsigned long)&#34;,引自: std :: __ 1 :: __ split_buffer&amp;&gt; :: __ split_buffer(unsigned long,unsigned 代码-4a0a01.o中的long,std :: __ 1 :: allocator&amp;) &#34; ___ cxa_begin_catch&#34;,引自: ___clang_call_terminate代码-4a0a01.o&#34; ___ gxx_personality_v0&#34;,引自: _main in code-4a0a01.o 代码-4a0a01.o中的void std :: __ 1 :: vector&gt; :: __ push_back_slow_path(int const&amp;) 代码-4a0a01.o中的Dwarf异常展开信息(__eh_frame)ld:找不到架构x86_64 clang的符号:错误:链接器 命令失败,退出代码为1(使用-v查看调用)
答案 0 :(得分:1)
您使用的是gcc
,它是C编译器。 C编程语言不支持STL(标准模板库)。使用g++
,这是C ++编译器。