我想弄清楚两个问题。如何找到阵列的大小。我使用了一个网站,他们展示了这样的东西。
int myarray[5];
int main()
{
cout<<myarray.size()<<endl;
return 0;
}
我知道还有另一种方式,但我知道你可以调整尺寸,或者我认为它的长度,任何人都可以帮忙吗?
我也在尝试使用两个数组并在其中找到唯一的数字,所以我做了:
int myarray1[5]={2, 3, 4, 5, 6};
int myarray2[3]={2, 3, 4};
int main()
{
for (int i=0; 0<size.array1; i++){
for (int j=0; 0<size.array2; j++){
if array[i]!=array[j]{
<<cout i;
}
}
}
}
你们有什么想法?
答案 0 :(得分:1)
数组不是类,也没有成员函数。所以这句话
cout<<myarray.size()<<endl;
无效,编译器将发出错误。
要获得数组的大小,你可以编写
cout << sizeof( myarray ) / sizeof( *myarray ) <<endl;
或者您可以使用标头std::extent
<type_traits>
例如
#includde <type_traits>
//...
cout << std::extent<decltype( myarray )>::value <<endl;
另一种方法是使用标头std::array
中声明的标准类<array>
而不是普通数组。例如
#include <iostream>
#include <array>
std::array<int, 5> myarray;
int main()
{
std::cout << myarray.size() << std::endl;
return 0;
}
如果要在两个数组中查找唯一元素并对数组进行排序,则可以使用标题std::symmetric_difference
中声明的标准算法<algorithm>
。例如
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
int myarray1[5] = { 2, 3, 4, 5, 6 };
int myarray2[3] = { 2, 3, 4 };
for ( int x : myarray1 ) std::cout << x << ' ';
std::cout << std::endl;
for ( int x : myarray2 ) std::cout << x << ' ';
std::cout << std::endl;
std::set_symmetric_difference( myarray1, myarray1 + 5,
myarray2, myarray2 + 3,
std::ostream_iterator<int>( std::cout, " " ) );
std::cout << std::endl;
return 0;
}
程序输出
2 3 4 5 6
2 3 4
5 6
答案 1 :(得分:0)
有关普通静态数组的答案,请参阅How do I determine the size of my array in C? - 它的工作原理与C语言相同。( - &gt; sizeof(myarray)/sizeof(myarray[0])
)
但是如果你正在使用C ++ [11],你可能想要完全避免这样的数组,而是使用std::array
。
#include <iostream>
#include <array>
int main()
{
std::array<int, 5u> myarray;
std::cout<< myarray.size() << std::endl; // valid
return 0;
}
或其他代码:
int main()
{
std::array<int, 5u> myarray1 = {2, 3, 4, 5, 6};
std::array<int, 3u> myarray2 = {2, 3, 4};
for (unsigned i=0; 0 < size.array1; ++i){
for (unsigned j=0; 0<size.array2; ++j){
if (array[i]!=array[j]{
std::cout << i << " ";
}
}
}
}